我有两个包含芹菜任务定义的文件。它们每个都包含一个特定队列的代码。其中一个导入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.