芹菜在哪里存储任务功能?

Where celery stores task functions?

有一个通过 celery+kombu+Oracle 运行周期性任务的 Django 应用程序。我花了一些时间,直到注意到要更改任务代码需要重新启动 celery worker,而不是 Django 服务器 (uWSGI)。

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

Celery 系统由 1 个或多个(通常 python)进程组成,这些进程将 methods/tasks 加载到内存中。

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

>>> from spam import eggs

eggs会分配到一个内存槽。如果您编辑 eggs,则必须重新启动 shell 才能看到更改。

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