事实上,我很少有django应用程序带有celeron任务。我需要每个任务都在特定的通道中执行,这样我就可以控制负载。例如,我可能有3个服务器监听channel_for_app_1
,而有2个监听channel_for_app_2
。我的问题是如何运行芹菜守护进程并指定通道?还有其他方法吗?
请查看此页面:http://docs.celeryproject.org/en/latest/userguide/routing.html.
您的芹菜应该从-Q,--queue设置开始,这些设置定义了哪个队列将用于提取任务
在django设置中,您可以指定CELERY_QUEUES:
CELERY_QUEUES = {
"worker": {
"exchange": "worker",
"binding_key": "worker"
},
就像这样。每个密钥都是一个队列名称,如果你想改变交换和绑定密钥(多个交换等),但我从来没有需要。
当你定义一个任务时,你可以
@task(queue="worker", etc)
最后一步是在运行芹菜时指定队列名称-可以通过芹菜守护程序配置,也可以在运行它时在命令行上指定。所有这些操作的结果是,芹菜任务将进入任务定义指定的队列,并且只进入运行指定队列的框中。
所以我不确定当你说"通道"时,你的意思是否明显不同,但我总是使用多个每个任务的队列来做你所描述的事情。