3

这是问题所在 - 我有一台服务器,上面有我的 django 项目。

我必须执行很多任务,所以我使用 celery+rabbitmq 来处理它们。

最近我发现服务器内存不足,所以我决定将所有任务移至另一台专用服务器。按照本指南,我创建了 rabbitmq 集群,而没有复制我的 django 项目。

我可以在我的新专用服务器上向 celery 发送任务,但是 celery 说任务未注册,例如

Received unregistered task of type 'djangoapp.tasks.taskname'. The message has been ignored and discarded.

那么我该怎么办 - 只是复制我的 django 项目或其他东西?

4

2 回答 2

1

至少,包含任务的代码需要在运行它们的盒子上。也就是说,djangoapp.tasks代码需要在那里。


自然,它的所有依赖项(可能是模型代码)和配置(设置)也需要在那里。
您可以尝试仅通过包含这些部分来节省一些空间,但我真的认为这不值得。

您应该在两台服务器上运行整个代码库(项目 + 应用程序)。


有关信息,当您启动 Celery 时,会显示已注册的任务。您可以使用它来检查一切是否正确设置。

于 2012-12-30T15:24:04.843 回答
0

每个 celery worker 服务器都应该运行相同代码的副本,是的

于 2012-12-30T15:23:54.717 回答