如何在芹菜中使代码的某些部分特定于队列?

时间:2014-08-16 08:24:02

标签: python rabbitmq celery amqp

我有两个包含芹菜任务定义的文件。它们中的每一个都包含特定队列的代码。其中一个进口scikit-learn,因此对于VPS有限的内存有点耗费内存。当celery初始化时,它执行两个文件来查找任务,每个芹菜工人都会导入scikit-learn。有办法防止这种情况吗?

我已经尝试使用inspect来获取当前活动队列,并且如果此worker消耗此队列,则继续,但我认为在初始化时它不起作用:

i = inspect(['celery@hostname'])
print i.active_queues()    # None

2 个答案:

答案 0 :(得分:0)

我认为最好的方法是启动两个工作人员,让他们加载2个不同的应用程序并创建2个不同的队列。

示例工人从头顶开始cmd:

celery -A scikit -Q learning worker

celery -A default -Q default worker

当然,这要求您添加任务路由(以便scikit任务进入学习队列,其他任务进入默认队列)。

答案 1 :(得分:0)

我能够通过清空 CELERY_IMPORTS 列表然后包括via cmd来解决它

celery -A proj worker -l info -Q first_queue -I proj.file1

仅查找 proj.file1 中的任务。