Django和芹菜

Django和芹菜,django,celery,django-celery,Django,Celery,Django Celery,在阅读了大量的博客文章后,我决定从crontab转到芹菜,用于我的中型Django项目。我有几件事不明白: 1-我计划启动一个micro EC2实例,该实例将专用于RabbitMQ,这是否足以完成中小型繁重任务?(如向亚马逊SES发送定期电子邮件) 2-任务计算,任务计算是在Django服务器还是rabbitMQ服务器上进行的(假设rabbitMQ位于单独的服务器上) 3-当我需要扩展我的系统并且在负载平衡器后面有2个或更多应用服务器时,这两台芹菜机是否需要连接到同一rabbitMQ vhost

在阅读了大量的博客文章后,我决定从crontab转到芹菜,用于我的中型Django项目。我有几件事不明白:

1-我计划启动一个micro EC2实例,该实例将专用于RabbitMQ,这是否足以完成中小型繁重任务?(如向亚马逊SES发送定期电子邮件)

2-任务计算,任务计算是在Django服务器还是rabbitMQ服务器上进行的(假设rabbitMQ位于单独的服务器上)

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

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

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

  • 要添加额外的工作线程,这些工作线程实际上应该连接到同一虚拟主机。你会的 如果希望应用程序具有单独的消息总线,则仅使用单独的虚拟主机

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

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

  • 要添加额外的工作线程,这些工作线程实际上应该连接到同一虚拟主机。你会的 如果希望应用程序具有单独的消息总线,则仅使用单独的虚拟主机