2013-06-04 22 views
14

Tôi đang sử dụng Fabric để triển khai một nhà môi giới Celery (chạy RabbitMQ) và nhiều công nhân Celery với celeryd được daemonized qua supervisor. Tôi không thể cho cuộc sống của tôi tìm ra cách tải lại mô-đun tasks.py ngắn để khởi động lại máy chủ.Làm cách nào để tự động tải lại các mô-đun nhiệm vụ bằng Celery daemon?


/etc/supervisor/conf.d/celeryd.conf

[program:celeryd] 
directory=/fab-mrv/celeryd 
environment=[RABBITMQ crendentials here] 
command=xvfb-run celeryd --loglevel=INFO --autoreload 
autostart=true 
autorestart=true 

celeryconfig.py

import os 

## Broker settings 
BROKER_URL = "amqp://%s:%[email protected]" % (os.environ["RMQU"], os.environ["RMQP"]) 

# List of modules to import when celery starts. 
CELERY_IMPORTS = ("tasks",) 

## Using the database to store task state and results. 
CELERY_RESULT_BACKEND = "amqp" 

CELERYD_POOL_RESTARTS = True 

thông tin bổ sung

  • celery --version 3.0.19 (Chiastic slide)
  • python --version 2.7.3
  • lsb_release -a Ubuntu 12.04.2 LTS
  • rabbitmqctl status ... 2.7.1 ...

Ở đây ar e một số điều tôi đã cố gắng:

  • Các celeryd --autoreload cờ
  • sudo supervisorctl restart celeryd
  • celery.control.broadcast('pool_restart', arguments={'reload': True})
  • ps auxww | grep celeryd | grep -v grep | awk '{print $2}' | xargs kill -HUP

Và thật không may, không có gì làm cho người lao động để tải lại các module tasks.py (ví dụ sau khi chạy git pull để cập nhật tệp). Ý chính của các hàm fab thích hợp có sẵn here.

Người môi giới/công nhân chạy tốt sau khi khởi động lại.

+2

'supervisorctl restart' thường thực hiện thủ thuật cho tôi. –

+0

Than ôi, không phải cho tôi. Tôi đã thêm một gist cho 'fabfile.py' của tôi với các hàm fab có liên quan được trích xuất. – pztrick

+0

đoán rộng ở đây, nhưng bạn đã cố xóa '* .pyc' trước khi tải lại chưa? –

Trả lời

2

Chỉ cần chụp trong bóng tối, với tùy chọn celeryd --autoreload bạn có chắc chắn rằng mình có một trong số file system notification backends không? Nó khuyến cáo PyNotify cho Linux, vì vậy tôi bắt đầu bằng cách đảm bảo rằng bạn đã cài đặt.

+1

Không có súc sắc. :('Yêu cầu đã thỏa mãn (sử dụng - upgrade để nâng cấp): pyinotify trong/usr/local/lib/python2.7/dist-packages' ** (Phiên bản 0.9.4) ** – pztrick

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