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