如何在Celery中创建子任务

时间:2014-01-31 13:48:49

标签: python celery celerybeat

我正在尝试遍历我的数据库中的许多buildings。在每个建筑物中,我为apt中的每个building生成一个帐单。这一切都发生在每月25日Celery的预定任务中。该法案将在下个月发出。我知道我可以使用chordsgroups以及其他子任务我只是混淆了如何将其组织成一个巨大的工作机制。这是我到目前为止所尝试的(这是行不通的)。我正在测试使用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

然后没有任何事情发生。

0 个答案:

没有答案