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



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

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

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

我认为最好的方法是启动两个worker,让它们加载两个不同的应用程序并创建两个不同的队列。

example worker start CMD from top of my head:

celery -A scikit -Q learning worker

celery -A default -Q default worker

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

我可以通过清空CELERY_IMPORTS列表来解决这个问题,然后通过cmd

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

只查找 project .file1.

中的任务。

相关内容

  • 没有找到相关文章

最新更新