4

私はbuildings自分のデータベースで多くをループしようとしています。各建物でapt、その中のそれぞれの請求書を生成しbuildingます。Celeryこれはすべて、毎月 25 日にスケジュールされたタスクで発生します。翌月分の請求書が送られてきます。chordsおよびその他のサブタスクを使用できることはわかっていますがgroups、それを 1 つの巨大な作業メカニズムに編成する方法について混乱しています。これは私がこれまでに試したことです(うまくいきません)。現在の時刻を使用してテストしcrontabているので、実行されていることがわかります。本番環境では、その日付を毎月 25 日に設定します。

config.py :

CELERY_TIMEZONE = 'America/New_York'
CELERYBEAT_SCHEDULE = {
    "billing-schedule": {
        "task": "tasks.bill_all_buildings",
        "schedule": crontab(hour=8,minute=41)
    },
}

タスク.py :

@celery.task()
def bill_all_buildings():
    for building in Building.query.all():
        if building.billing_on:
            print 'billing %s' % building.name
            bill_apts_in_building.delay(building)

@celery.task()
def bill_apts_in_building(building):
    for apt in building.apts:
        print 'billing apt %s' % apt.last_name
        create_apt_bill.delay(apt)

@celery.task()
def create_apt_bill(apt):
    money_helpers.bill_next_month(apt)

何が起こるかbill_all_buildingsというと、それが実行され、次のように表示されます。

[2014-01-31 07:28:00,036: DEBUG/MainProcess] Task accepted: tasks.bill_apts_in_building[da7b46f2-e559-4947-9442-bd31329d8d0d] pid:9156

その後、何も起こりません。

4

0 に答える 0