1

我有一个 Django 应用程序,它使用 django-celery、celery 和 rabbitmq 进行离线分布式处理。

现在设置是这样的,我需要在网络中的其他节点(与托管 Django Web 应用程序的位置不同)中运行 celery 任务(进而运行 celery 工作人员)。

为此,据我了解,我需要将所有 Django 代码放在这些单独的服务器中。不仅如此,我还必须安装 Django 应用程序所需的所有其他 python 库。

这样,我必须将所有 django 源代码传输到网络中所有可能的服务器,安装依赖项并运行某种更新系统,它将跨节点同步所有源。

  1. 这是正确的做事方式吗?有没有一种更简单的方法可以让 celery 工作人员在托管 Django 代码的 Web 应用程序服务器之外运行?

  2. 如果确实除了复制代码并在所有服务器中复制之外别无他法,有没有办法只复制 celery 任务所需的源文件(这将包括所有模型和视图 - 也不是那么小的任务)

4

1 回答 1

2

对于这种情况,我过去用我所有的芹菜任务代码制作了一个鸡蛋,我可以简单地rsync或以某种方式复制到我的工作节点。通过这种方式,您可以在一个项目中编辑您的 celery 代码,该项目可以在您的 django 和您的工作节点上使用。

因此,总而言之,创建一个web-app-celery-tasks项目并将其制成一个可安装的 Egg,并拥有一个web-app依赖于 celery 任务 egg 的包。

于 2013-06-24T07:39:16.700 回答