Django和Celery-如何分配?

用户名

我正在尝试分发Django和Celery。

我已经用Django和Celery创建了一个小项目。Django将要求Celery Worker处理数据库中的某些数据。然后将数据传递回Django。

我的想法是:

  1. Django堆栈安装在一台服务器上
  2. 一台服务器上的消息队列(RabbitMQ)
  3. 一台服务器上的芹菜工人

因此,总共3台服务器

但是,问题在于celery必须使用Django中的某些代码(例如模型),因为它可以访问模型。因此,它还需要settings.py文件来知道什么是服务器。

这是否意味着对于#3,我需要在服务器上安装Django和Celery,但禁用Django并仅运行celery?例如celery -A PROJECT_NAME worker -l INFO,但没有适用于Django的Apache服务器吗?

奇拉尔·阿南德

如果要让芹菜工作者在其他服务器上操作,则需要确保可以从该服务器访问该工作者所需的所有资源。

例如,如果您有一个简单的任务,则可以仅将该任务所需的代码复制到服务器。如果您的工作人员需要任何其他资源,例如某些其他代码,文件和数据库,则需要确保它具有访问权限。

确实,如果要让两个服务器执行相同的任务,则必须使用简单的Web界面(例如Flask)在服务器之间进行通信(并扩展队列的功能)。然后,您必须确保它们都使用相同的数据源。

考虑远程托管数据库,或者让远程服务器远程访问数据库。无论哪种方式,服务器上运行的任何工作人员都需要访问数据库以及完成任务所需的所有源代码。然后,您只需要使两个服务器共享一个消息传递队列即可。

来源:如何在远程系统上配置和运行celery worker

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章