Bạn nên có borker trong một nút và định cấu hình để công nhân từ các nút khác có thể truy cập vào nút đó.
Để làm điều đó, bạn có thể tạo người dùng/vhost mới trên rabbitmq.
# add new user
sudo rabbitmqctl add_user <user> <password>
# add new virtual host
sudo rabbitmqctl add_vhost <vhost_name>
# set permissions for user on vhost
sudo rabbitmqctl set_permissions -p <vhost_name> <user> ".*" ".*" ".*"
# restart rabbit
sudo rabbitmqctl restart
Từ các nút khác, bạn có thể xếp hàng công việc hoặc bạn chỉ có thể chạy công nhân để tiêu thụ công việc.
from celery import Celery
app = Celery('tasks', backend='amqp',
broker='amqp://<user>:<password>@<ip>/<vhost>')
def add(x, y):
return x + y
Nếu bạn có một tập tin (nói task.py
) như thế này, bạn có thể xếp hàng lên nhiệm vụ sử dụng add.delay().
Bạn cũng có thể bắt đầu công nhân với
celery worker -A task -l info
Bạn có thể xem câu trả lời của tôi ở đây để có được một ý tưởng ngắn gọn về cách run tasks on remote machines. Để biết quy trình từng bước, bạn có thể kiểm tra bài đăng tôi đã viết on scaling celery.
Giải pháp của ChillarAnand nên giải quyết nó cho bạn. Bạn cần một số điều khác để được làm sáng tỏ? –