我有两个包含芹菜任务定义的文件。它们中的每一个都包含特定队列的代码。其中一个进口scikit-learn,因此对于VPS有限的内存有点耗费内存。当celery初始化时,它执行两个文件来查找任务,每个芹菜工人都会导入scikit-learn。有办法防止这种情况吗?
我已经尝试使用inspect来获取当前活动队列,并且如果此worker消耗此队列,则继续,但我认为在初始化时它不起作用:
i = inspect(['celery@hostname'])
print i.active_queues() # None
答案 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 中的任务。