2 votes

la deuxième tâche de cerclage de django n'est pas exécutée

J'ai créé un céleri shared_task qui exécute un autre 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')

J'obtiens la sortie de la première impression first:worker_tenant mais pas le second worker_update_tenant .

J'ai également essayé d'appeler la deuxième tâche avec apply_async(args=(...)) mais cela n'a pas non plus fonctionné !

0voto

wasp256 Points 2148

J'ai réussi à le faire fonctionner en utilisant un générateur avec groupe à la place :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X