الصفحة التي تخدم WSGI لا تحديث
سؤال
حصلت مؤخرًا على أول تطبيقي للعمل في UWSGI مع شيروكي. لقد استخدمت الرمز التالي المأخوذة من مستندات UWSGI:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
yield 'Hello World\n'
تقرأ الصفحة بشكل صحيح Hello World
. عندما أقوم بتغيير هذا النص إلى New Thing
وتحديث ، لا شيء يتغير. ما الذي أنسى؟
ما جربته:
- تطهير تاريخ المتصفح وذاكرة التخزين المؤقت
- التوقف وبدء شيروكي
تحرير: للتوضيح ، أتغير
Hello World
ل New Thing
في كود بيثون. ثم أوقف شيروكي ، وتحديث ، ومن الواضح أنني أرى رسالة خطأ. أعيد تشغيل شيروكي ، وأراجع ، وأرى Hello World
.
المحلول
لذا فإن الطريقة التي تعمل بها هي أن Cherokee تقوم بإدارة مثيل UWSGI قيد التشغيل في الأرض الخلفية بالنسبة لك. ما لاحظته حتى الآن ، ولم أنتهي من النظر إليه ، هو أنه إذا أغلقت Cherokee ، فلا يبدو أنه لا يغلق أيضًا مثيلات UWSGI.
جرب هذا:
sudo service cherokee start
ps aux | grep uwsgi
# you should see nothing from this ps command
# now hit your web app
sudo service cherokee stop
ps aux | grep uwsgi
# you should see the instance of uwsgi that cherokee started
لذا ، يتم تشغيل رمز التطبيق الخاص بك بالفعل عبر UWSGI و Cherokee يشبه خادم الوكيل. من أجل تحديث رمز التطبيق ، تحتاج إلى إرسال إشارة HUP إلى UWSGI ، وليس Cherkee.
sudo killall -HUP uwsgi
يجب أن يتسبب ذلك في تحديث UWSGI لتغييرات تطبيقك بغض النظر عن شيروكي.
لا تنتمي إلى StackOverflow