多个Django项目和异步电子邮件的最佳方法

时间:2018-11-22 04:48:42

标签: python django celery amazon-ses

我在Ubuntu服务器中使用Django 2和Python 3.5。 我有多个Django项目,这些项目使用相同的virutalenv,因为它们具有相同的源代码。

为了使电子邮件发送异步,我正在使用Django的邮局应用程序,这需要每分钟运行crontab来在数据库中发送排队的电子邮件。 但是,这种方法越来越难以在同一服务器上维护大量的Django项目,因此每分钟我的CPU需求都会急剧增加。 电子邮件正在由AWS SES处理。

我正在考虑将Celery与RabbitMQ结合使用,但这让我感到困惑。 我将拥有多个Celery和一个RabbitMQ实例吗? 可以做到这一点而不会受到干扰吗?

有没有办法只使用一个异步任务过程,而不是Celery和RebbitMQ的替代方法?

1 个答案:

答案 0 :(得分:0)

假设实例表示ec2实例,则您可以根据需要拥有任意数量(或更少)的celery实例和任意数量(或更少)的Rabbitmq实例(可以对兔子mq进行集群)。您要做的就是确保所有生产者(您的django网络服务器)和所有消费者(您的芹菜工人)都指向与经纪人相同的兔子mq url。

请注意,由于您使用的是AWS,因此可以使用Amazon's SQS serviceusing AWS_hosted redis via elasticache轻松设置celery。