有一个Django应用程序通过celery + kombu + Oracle运行定期任务。我花了一些时间,直到注意到要更改任务代码芹菜工作者需要重新启动,而不是Django服务器(uWSGI)。
问题是,芹菜在哪里存储代码?某种缓存还是什么?
答案 0 :(得分:2)
Celery运行多个工作进程,与django服务器进程分开。 这些进程将python代码加载到内存中并执行它。他们继续跑,直到关闭。 如果更新磁盘上的python代码,正在运行的进程将无法获取更改 - 您需要重新启动它们。
答案 1 :(得分:1)
Celery系统由一个或多个(通常是python)进程组成,这些进程将您的方法/任务加载到内存中。
与启动交互式shell相同。如果你这样做:
>>> from spam import eggs
eggs
将被分配到内存插槽。如果您编辑eggs
,则必须重新启动shell以查看更改。