2014-12-16 14 views
9

Tôi đang sử dụng công ty môi giới Celery 3.1.16 (chạy RabbitMQ) và nhiều công nhân Celery với cần tây được ủy quyền thông qua người giám sát. Vấn đề là cập nhật nhiệm vụ. Khi tôi cập nhật tệp tasks.py của mình, nhân viên cần tây chạy mã cũ.Celery autoreload không hoạt động

Cần tây ra mắt lệnh:

/home/my_project/bin/celery -B --autoreload --app=my_app.celery:app worker --loglevel=INFO 

tôi bao gồm tập tin nhiệm vụ trong django settings.py:

CELERY_IMPORTS = [ 
    'my_app.tasks' 
] 

pyinotify được cài đặt và hoạt động (tôi đoán vậy), một phần của bản ghi cần tây:

[2014-12-16 20:56:00,016: INFO/MainProcess] Task my_app.tasks.periodic_update_task_statistic[175c2557-7c07-43c3-ac70-f4e115344134] succeeded in 0.00816309102811s: 'ok!' 
[2014-12-16 20:56:11,157: INFO/MainProcess] Detected modified modules: ['my_app.tasks'] 
[2014-12-16 20:57:00,001: INFO/Beat] Scheduler: Sending due task my_app.tasks.periodic_update_task_statistic (my_app.tasks.periodic_update_task_statistic) 
[2014-12-16 20:57:00,007: INFO/MainProcess] Received task: my_app.tasks.periodic_update_task_statistic[f22998a9-dcb4-4c29-8086-86dd6e57eae1] 

Vì vậy, câu hỏi của tôi: cách cập nhật cần tây và áp dụng mã nhiệm vụ mới, nếu chúng đã được sửa đổi?

+0

Tôi không có một câu trả lời. Tôi vẫn chỉ cần khởi động lại công nhân của tôi khi tôi làm một mã đẩy. http://stackoverflow.com/questions/16929264/how-can-i-automatically-reload-tasks-modules-with-celery-daemon – pztrick

+0

Tương tự tại đây. Tôi khởi động lại cần tây ở cuối quy trình triển khai. Triển khai được thực hiện bằng cách sử dụng vải cho những vấn đề đó. –

+0

Xin chào LJ, mọi thông tin cập nhật về câu hỏi này? Bạn có thể tìm ra? – Desprit

Trả lời

1

Tôi gặp vấn đề tương tự. Trong khi tôi không thích nó, tôi làm như sau, đầu tiên loại bỏ và biên dịch tập tin .pyc bất cứ nơi nào theo thư mục hiện tại của tôi, sau đó khởi động lại tất cả các công nhân. find . -name "*.pyc" -exec rm {} \; supervisorctl restart all Có vẻ lạ khi cờ --autoreload không làm gì cả, nhưng không phải trong trường hợp của tôi.

1

Celery chỉ tự động tải các mô-đun mà nó tải trực tiếp, nó không theo dõi các mô-đun khác được tải bởi các mô-đun trực tiếp.

Các vấn đề liên quan