我正在尝试遍历我的数据库中的许多buildings
。在每个建筑物中,我为apt
中的每个building
生成一个帐单。这一切都发生在每月25日Celery
的预定任务中。该法案将在下个月发出。我知道我可以使用chords
和groups
以及其他子任务我只是混淆了如何将其组织成一个巨大的工作机制。这是我到目前为止所尝试的(这是行不通的)。我正在测试使用crontab
和当前时间,所以我可以看到它运行。在制作中,我将该日期设定为每个月的25日。
config.py :
CELERY_TIMEZONE = 'America/New_York'
CELERYBEAT_SCHEDULE = {
"billing-schedule": {
"task": "tasks.bill_all_buildings",
"schedule": crontab(hour=8,minute=41)
},
}
tasks.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
然后没有任何事情发生。