1

在阅读了很多博文之后,我决定从 crontab 切换到 Celery 来完成我的中型 Django 项目。我有一些我不明白的事情:

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

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

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

4

1 回答 1

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

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

  3. 要添加额外的工作人员,这些工作人员确实应该连接到同一个虚拟主机。如果您希望应用程序具有单独的消息总线,您将只使用单独的虚拟主机。

于 2012-12-06T15:45:23.733 回答