Bir Python betiği değiştirildiğinde uWSGI'ı nasıl yeniden başlatırım?


38

Nerede olduğunu hatırlayamıyorum, ancak bir proje betiği değiştirildiğinde uWSGI'ın kendisini Django geliştirme sunucusu gibi yeniden yükleyebileceğini okudum. Bunu belgelerde ve internette bulamıyorum . Bunu nasıl yapabilirim?

Çalışma makinelerimde Ubuntu 12.04, sahne ve prodüksiyon sunucusu Debian Squeeze, Django 1.4 ve uWSGI 1.2 kullanıyorum.

Yanıtlar:




10

Django otomatik yükleyicisini kaybetmek istemiyorsanız, bu yeniden yükleme yöntemini kaydedin (örneğin: settings.py içinde):

import uwsgi
from uwsgidecorators import timer
from django.utils import autoreload

@timer(3)
def change_code_gracefull_reload(sig):
    if autoreload.code_changed():
        uwsgi.reload()

Şimdi kodunuzu değiştirirseniz yeniden yüklenecek.

Yazar: Simone Federici


1
Bu mükemmel çalıştı. Ayrıca bir koşullu ekledi, böylece bu sadece geliştirme ortamında çağrılabilir.
2upmedia

0

uwsgi ayrıca kill SIGNAL kullanarak yeniden başlatmaya izin verir. Aşağıdaki gibi kullanıyorum:

# ps -efa | grep uwsgi | grep prod
app  13390 13383  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13417 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13419 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
# kill -HUP 13390

Aynı komutu uygularsanız, alt işlemlerin, usta tarafından yeniden oluşturuldukça değiştirildiğini göreceksiniz. Ayrıca usta / çalışan işlem sayısı için uwsgi config'i kontrol edin. Bu metot, uyumlu veya diğer otomasyon araçlarına entegre edilmesi kolaydır, bu nedenle uzaktan kullanım için kolaylaşır.

Bu, orijinal işleminizin --touch-reload ile başlatılmasına gerek duymaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.