我正在尝试遍历buildings
我的数据库中的许多内容。在每个建筑物apt
中,我为其中的每个生成一个账单building
。这一切都发生在Celery
每月 25 日的计划任务上。账单将在下个月寄出。我知道我可以使用chords
和groups
其他子任务,我只是对如何将它组织成一个巨大的工作机制感到困惑。这是我迄今为止尝试过的(不起作用)。我正在测试使用crontab
和当前时间,以便我可以看到它运行。在生产中,我会将该日期设置为每个月的 25 日。
配置文件:
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
然后什么也没有发生。