Bagaimana cara membuat uWSGI me-restart ketika skrip Python dimodifikasi?


38

Tidak ingat di mana, tetapi saya membaca uWSGI dapat memuat ulang dirinya sendiri seperti server pengembangan Django ketika skrip proyek dimodifikasi. Saya tidak dapat menemukan itu di dokumen , atau di internet. Bagaimana saya bisa melakukan ini?

Saya menggunakan Ubuntu 12.04 pada mesin kerja saya dan Debian Squeeze di server panggung & produksi, Django 1.4 dan uWSGI 1.2.

Jawaban:




10

Jika Anda tidak ingin kehilangan autoreload django, daftarkan metode reload ini (yaitu: di settings.py):

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()

Sekarang jika Anda mengubah kode Anda akan dimuat ulang.

Penulis: Simone Federici


1
Ini bekerja dengan sempurna. Juga menambahkan persyaratan sehingga ini hanya dipanggil di lingkungan pengembangan.
2upmedia

0

uwsgi juga memungkinkan restart menggunakan kill SIGNAL. Saya menggunakannya sebagai berikut:

# 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

Jika Anda menjalankan perintah yang sama, Anda akan melihat pid prok anak akan diubah saat mereka dilahirkan kembali oleh master. Juga periksa konfigurasi uwsgi untuk jumlah master / pekerja proc. Metode ini mudah diintegrasikan dengan alat otomatisasi yang mungkin atau lainnya sehingga mudah digunakan untuk jarak jauh.

Ini tidak perlu proses awal untuk memulai dengan --touch-reload.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.