姜戈和芹菜的困惑



在阅读了很多博客文章后,我决定从crontab切换到Celery,用于我的中等规模的Django项目。我有几件事不明白:

1- 我计划启动一个专用于 RabbitMQ 的微型 EC2 实例,这对于中小型繁重任务是否足够?(例如向 Amazon SES 发送定期电子邮件)。

2-任务的计算

,任务的计算发生在Django服务器还是RabbitMQ服务器上(假设rabbitMQ在单独的服务器上)?

3- 当我需要扩展我的系统并在负载均衡器后面有 2 个或更多应用程序服务器时,这两台芹菜机器是否需要连接到同一个 rabbitMQ 虚拟主机?假设应用程序服务器是复本,任务相同,并且所有内容在数据库级别都是同步的。

  1. 我不知道这个问题的答案,但您绝对可以将其配置为合适的(例如,对单个进程工作线程使用 -c1 以避免使用大量内存或 eventlet/gevent 池),另请参阅--autoscale选项。 代理传输的选择在这里也很重要,不轮询的代理传输的 CPU 效率更高(rabbitmq/redis/beanstalk)。

  2. 计算发生在工作线程上,代理只负责接受、路由和传递消息(并在必要时将消息持久化到磁盘)。

  3. 要添加其他工作线程,这些工作线程确实应该连接到同一虚拟主机。你会仅当希望应用程序具有单独的消息总线时,才使用单独的虚拟主机。

相关内容

  • 没有找到相关文章

最新更新