私は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
その後、何も起こりません。