设置服务以在Web集群环境中执行任务

时间:2012-06-18 07:34:56

标签: django amazon-web-services celery amazon-sqs

我正在寻找在Web集群环境中可靠地执行任务(在特定日期/时间只执行一次)的方法:例如,在初始注册后7天内向用户发送电子邮件提醒。我知道如何使用cron / django-cron / django-chronograph等来实现这一目标,但到目前为止我发现的所有内容似乎都是针对单服务器场景而设计的。

我希望避免因在多个服务器上运行相同作业而发送重复提醒,到目前为止,似乎在Web群集中使用锁定,过期超时等汇总您自己的基于数据库的解决方案实际上是唯一的选择。是否有任何现有的解决方案可以在Web集群环境中很好地工作?

1 个答案:

答案 0 :(得分:1)

您可以使用Celery Periodic Task

from datetime import timedelta

CELERYBEAT_SCHEDULE = {
    'add-every-30-seconds': {
        'task': 'tasks.add',
        'schedule': timedelta(seconds=30),
        'args': (16, 16)
    },
}

CELERY_TIMEZONE = 'UTC'