سؤال

حصلت مؤخرًا على أول تطبيقي للعمل في UWSGI مع شيروكي. لقد استخدمت الرمز التالي المأخوذة من مستندات UWSGI:

def application(environ, start_response):
  start_response('200 OK', [('Content-Type', 'text/plain')])
  yield 'Hello World\n'

تقرأ الصفحة بشكل صحيح Hello World. عندما أقوم بتغيير هذا النص إلى New Thing وتحديث ، لا شيء يتغير. ما الذي أنسى؟

ما جربته:

  1. تطهير تاريخ المتصفح وذاكرة التخزين المؤقت
  2. التوقف وبدء شيروكي


تحرير: للتوضيح ، أتغير 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 لتغييرات تطبيقك بغض النظر عن شيروكي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top