我有一个Django项目,我正在尝试使用Celery提交后台处理任务(http://ask.github.com/celery/introduction.html).Celery与Django很好地集成,我已经能够提交我的自定义任务并获得结果.
唯一的问题是我找不到在守护进程中执行自定义初始化的合理方法.在开始处理任务之前,我需要调用一个加载大量内存的昂贵函数,而且每次都无法调用该函数.
以前有人有这个问题吗?任何想法如何解决它而不修改Celery源代码?
谢谢
是否可以选择在启动时将变量传递给 celery worker 并在执行时在 worker 内部使用它?
我正在编写负责机器学习培训和评估的服务器。我想动态启动新的 worker 实例并将变量传递给它,该变量将用于在内部加载特定模型。
我找到了如何使用方法从这里的答案开始工作worker_main。
我在考虑两种解决方案:
将其设置为环境变量。此解决方案的问题在于,当同时创建两个 worker 实例时,它可能会损坏。
将其作为 argv 传递,但我不知道如何读取 worker 内部的变量。
编辑
我找到了这个线程,但它只讨论了在任务中访问自定义参数。我的问题是关于在工人初始化时访问它。
灵感来自这个线程我会尝试用芹菜信号。 http://docs.celeryproject.org/en/latest/userguide/signals.html#worker-init