首页 > 解决方案 > django cerlery 第二个任务未执行

问题描述

我创建了一个shared_task执行另一个的芹菜shared_task

@shared_task(base=WorkerBase,
             name='analytics.worker-tenant',
             rate_limit='3/m')
def worker_tenant():
    tenants = Tenant.objects.values_list('id', 'contexttenant')

    print('first:worker_tenant')
    for tenant in tenants:
        worker_update_tenant.delay(tenant[0], tenant[1])


@shared_task(name='analytics.worker-update-tenant',
             autoretry_for=(HTTPError, ConnectionError),
             retry_backoff=True)
def worker_update_tenant(id, context, timespan=timedelta(weeks=1)):
    print('worker_update_tenant')

我得到了第一个 print 的输出,first:worker_tenant但没有第二个print 的输出worker_update_tenant

我也尝试过调用第二个任务,apply_async(args=(...))但这也没有用!

标签: djangoceleryscheduled-tasks

解决方案


我设法通过使用带有组的生成器来使其工作:

group(
    worker_update_tenant.s(tenant[0], tenant[1]) for tenant in tenants
).apply_async()

推荐阅读