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.3lsb_release -a
Ubuntu 12.04.2 LTSrabbitmqctl 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.
'supervisorctl restart' thường thực hiện thủ thuật cho tôi. –
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
đoán rộng ở đây, nhưng bạn đã cố xóa '* .pyc' trước khi tải lại chưa? –