首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多台计算机上的Django-celery

多台计算机上的Django-celery
EN

Stack Overflow用户
提问于 2012-05-11 06:17:10
回答 1查看 564关注 0票数 1

在我的开发机器上,我得到了我想用django-celery做的所有事情。更具体地说,该应用程序接受照片urls,然后将其转换为同一机器下载的任务。

现在我想要做的是把django代码放在heroku上,把celery tasks放在一台专用的电脑上,这台电脑将保存在办公室里。

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

理想情况下,我希望将如下内容放入我的setting.py文件中:

代码语言:javascript
复制
remote_worker = '123.2.4.23:1234'

在办公室的电脑上

代码语言:javascript
复制
tasks = 'photos/tasks.py'
remote_app = 'herokuapp123.com/myapp'
username = 'me'
password = 'pw'

我知道有很多问题。如有任何帮助或建议,我们将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-11 06:49:59

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

  1. 在heroku服务器上安装RabbitMQ,通过防火墙将其端口暴露给您的企业IP,并配置您的办公室计算机以连接到它
  2. 在您的企业计算机上本地安装RabbitMQ并在Heroku上配置celery以连接到它
  3. 在两端安装RabbitMQ并桥接它们。

或者,您可以使用VPN解决方案将heroku服务器集成到您自己的企业网络中,并让它们直接相互通信(因为毕竟您可能不希望在interwebz上传输裸露的AMQP包)。

场景1可能是最容易设置的,因为Heroku已经为您提供了这样做的插件基础设施。场景2可能不是你想要的,因为你必须在你的业务防火墙上打一个洞。场景1和2都将具有等待时间和可靠性问题,因为在因特网上路由AMQP业务将不是有利或可靠的。您将丢弃消息,并且celery将不断重试,直到它成功或达到最大失败次数。然而,AMQP是为处理网络问题而设计的,如果这很关键,它们可能会无意中影响您的性能。但话又说回来,在这种情况下,您应该重新考虑将芹菜工作人员放在企业桌面上。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10542950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档