2015-12-10 79 views
1

有一个Django应用程序,通过celery + kombu + Oracle运行定期任务。我花了一些时间,直到注意到要更改芹菜工作者需要重新启动的任务代码,而不是Django服务器(uWSGI)。芹菜在哪里存储任务功能?

问题是,芹菜在哪里存储代码?某种缓存或什么?

回答

0

Celery系统由1个或多个(通常是python)进程组成,这些进程将您的方法/任务加载到内存中。

这与启动交互式shell相同。如果你这样做:

>>> from spam import eggs 

eggs将被分配到一个内存插槽。如果你编辑栏,你将不得不重新启动shell来查看更改。

2

Celery运行几个工作进程,与django服务器进程分开。 这些进程将python代码加载到内存中并执行它。他们继续奔跑直到关闭。 如果更新磁盘上的python代码,更改将不会被正在运行的进程拾取 - 您需要重新启动它们。