1

Web クラスター環境で (特定の日時に 1 回だけ) タスクを確実に実行する方法を探しています。たとえば、最初の登録から 7 日後にユーザーにメール リマインダーを送信するなどです。cron/django-cron/django-chronograph などを使用してそれを達成する方法を認識していますが、これまでに見つけたものはすべて、単一サーバーのシナリオ用に設計されているようです。

同じジョブが複数のサーバーで実行された結果として重複したリマインダーを送信することを避けたいのですが、これまでのところ、Web クラスターでロック、有効期限のタイムアウトなどを使用して独自のデータベースベースのソリューションをロールアップすることが実際には唯一のオプションのようです。Web クラスター環境でうまく機能する既存のソリューションはありますか?

4

1 に答える 1

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'
于 2015-09-24T13:40:06.423 に答える