我对这种事情还很陌生,所以我完全有可能弄错了。
我正在尝试建立一个分布式任务系统。我有一个使用Celery生成任务的Django webapp。现在,我有webapp,worker和RabbitMQ在同一台服务器上运行。我想将它分发给几台服务器。
当我当前了解它时,我应该可以让我的webapp生成任务,将它们交给消息队列 - 这是它自己的服务器 - 然后分布在任意数量的工作人员服务器将使用该队列中的任务。我知道如何告诉我的Django应用程序哪个服务器是代理,但是如何在工作服务器上启动工作线程并指示它们从何处使用任务?我完全迷失了 - 我甚至不知道在哪里看。
答案 0 :(得分:2)
您可以像这样运行您的工作人员代码(async_tasks.py):
from celery import Celery
app = Celery('tasks', broker=broker_url)
@app.task(queue='queue_name')
def async_compute_something(input):
# do something
return "Result"
在使用此命令的其他计算机上:
celery -A async_tasks worker -Q queue_name
请注意,您已正确设置代理的网址,而不是localhost