Làm cách nào để tôi khởi động lại uWSGI khi tập lệnh Python được sửa đổi?


38

Không thể nhớ ở đâu, nhưng tôi đọc uWSGI có thể tải lại chính nó như máy chủ phát triển Django khi tập lệnh dự án được sửa đổi. Tôi không thể tìm thấy điều đó trong các tài liệu , cũng như trong các trang mạng. Tôi có thể làm cái này như thế nào?

Tôi sử dụng Ubuntu 12.04 trên các máy làm việc của mình và Debian Squeeze trên sân khấu & máy chủ sản xuất, Django 1.4 và uWSGI 1.2.

Câu trả lời:


39

Tham khảo: http://projects.unbit.it/uwsgi/wiki/Quản lý

Nếu bạn đã bắt đầu uwsgi với --touch-reload=/path/to/special/file/usually/the.initùy chọn, tải lại uWSGI của bạn là một vấn đề đơn giản của việc tải lại tệp đó với

touch /path/to/special/file/usually/the.ini

Và nếu bạn muốn khả năng "tự động tải", đây là mẹo giúp bạn thực hiện điều này: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks#uWSGIdjangoautoreloadmode



10

Nếu bạn không muốn mất tự động tải django, hãy đăng ký phương thức tải lại này (ví dụ: trong 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()

Bây giờ nếu bạn thay đổi mã của mình, nó sẽ được tải lại.

Tác giả: Simone Federici


1
Điều này làm việc hoàn hảo. Cũng đã thêm một điều kiện để điều này chỉ được gọi trong môi trường phát triển.
2upmedia

0

uwsgi cũng cho phép khởi động lại bằng cách sử dụng kill TÍN HIỆU. Tôi sử dụng nó như dưới đây:

# 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

Nếu bạn chạy cùng một lệnh, bạn sẽ thấy pcs procs con sẽ được thay đổi khi chúng được sinh ra bởi chủ. Đồng thời kiểm tra cấu hình uwsgi để biết tổng số Proc / worker. Phương pháp này dễ dàng tích hợp với các công cụ tự động hoặc ansible khác để dễ sử dụng từ xa.

Điều này không cần Proc ban đầu của bạn để được bắt đầu với --touch-tải lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.