我正在寻找在 Web 集群环境中可靠地执行任务(仅在特定日期/时间执行一次)的方法:例如,在初始注册后 7 天后向用户发送电子邮件提醒。我知道使用 cron/django-cron/django-chronograph 等来实现这一点的方法,但到目前为止我发现的所有内容似乎都是为单服务器场景设计的。
我想避免由于在多个服务器上运行相同的作业而发送重复的提醒,到目前为止,似乎在 Web 集群中汇总您自己的基于数据库的解决方案具有锁定、过期超时等确实是唯一的选择。是否有任何现有的解决方案可以在 Web 集群环境中很好地工作?
您可以使用
芹菜周期性任务。
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': timedelta(seconds=30),
'args': (16, 16)
},
}
CELERY_TIMEZONE = 'UTC'