在阅读了很多博客后,我决定从crontab切换到Celery,用于我的中型Django项目。我有一些我不明白的事情:
1-我计划启动一个专用于RabbitMQ的微EC2实例,这对于中小型重型任务是否足够? (例如向亚马逊SES发送定期电子邮件)。
2-计算任务,是否在Django服务器或rabbitMQ服务器上进行任务计算(假设rabbitMQ位于单独的服务器上)?
3-当我需要扩展我的系统并且在负载均衡器后面有2个或更多应用服务器时,这两个芹菜机是否需要连接到相同的rabbitMQ vhost?假设应用程序服务器是副本,并且任务相同,并且所有内容都在数据库级别上同步。
答案 0 :(得分:1)
我不知道这个问题的答案,但您肯定可以将其配置为合适(例如,对单个流程工作者使用-c1
以避免使用大量内存或eventlet / gevent池),另请参阅--autoscale
选项。代理传输的选择在这里也很重要,非轮询的更有效(Rabbitmq / redis / beanstalk)。
计算机发生在计算机上,经纪人只负责接收,路由和传递消息(并在必要时将消息保存到磁盘)。
要添加其他工作人员,这些工作人员确实应该连接到同一个虚拟主机。你会 如果您希望应用程序具有单独的消息总线,则仅使用单独的虚拟主机。