多台计算机上的Django-celery

时间:2012-05-10 22:17:10

标签: django celery django-celery

我得到了我想用django-celery在我的开发机器上工作的一切。更具体地说,该应用程序接受照片网址,然后将其转换为同一台计算机下载的任务。

现在我要做的是将django代码放在heroku上,将芹菜tasks放在专用的计算机上,将保存在办公室。

我不知道下一步是什么。如何告诉django应用程序连接到办公室计算机?设置办公室计算机以接受来自django应用程序的任务的过程是什么?如何将本地计算机登录凭据提供给django应用程序,以便它可以连接到数据库以更新模型?

理想情况下,我希望在我的setting.py文件中添加类似的内容:

remote_worker = '123.2.4.23:1234'

并在办公室电脑上

tasks = 'photos/tasks.py'
remote_app = 'herokuapp123.com/myapp'
username = 'me'
password = 'pw'

我知道有很多问题。任何帮助或指示将不胜感激!

1 个答案:

答案 0 :(得分:1)

这在很大程度上取决于你用于芹菜的AMQP后端。如果您使用默认值(RabbitMQ),则需要执行以下操作之一:

  1. 在heroku服务器上安装RabbitMQ,通过防火墙将其端口暴露给您的业务IP并配置您的办公室计算机以连接到它
  2. 在您的商用计算机上本地安装RabbitMQ,并在Heroku上配置芹菜以连接到它
  3. 在两侧安装RabbitMQ并桥接它们。
  4. 或者,您可以使用VPN解决方案将heroku服务器集成到您自己的业务网络中,并让它们直接相互通信(因为毕竟您可能不想通过interwebz传输AMQP数据包)。 / p>

    方案1可能是最容易设置的,因为Heroku已经为您提供了插件基础结构。场景2可能不是您想要的,因为您必须在业务防火墙中打一个洞。方案1和方案2都会有延迟和可靠性问题,因为通过互联网路由AMQP流量不会是权宜之计或可靠的。您将丢弃消息,芹菜将继续重试,直到成功或达到最大失败次数。但是,AMQP旨在处理网络问题,如果这些问题很严重,它们可能会无意中影响您的性能。但在那种情况下,你应该重新考虑将芹菜工人放在商用台式机上。

    方案C在可靠性方面可能是最好的,但也更难以设置。根据您的需求进行选择。