4

我正在尝试遍历buildings我的数据库中的许多内容。在每个建筑物apt中,我为其中的每个生成一个账单building。这一切都发生在Celery每月 25 日的计划任务上。账单将在下个月寄出。我知道我可以使用chordsgroups其他子任务,我只是对如何将它组织成一个巨大的工作机制感到困惑。这是我迄今为止尝试过的(不起作用)。我正在测试使用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

然后什么也没有发生。

4

0 回答 0