Às vezes nós precisamos conectar tarefas de acordo com o resultado delas, de modo similar a um fluxo estilo if/else
. Com Celery é possível fazer isso usando link
e link_error
.
Para te dar uma ideia, digamos que nós precisamos enviar uma mensagem de texto para nosso cliente. Se for enviada com sucesso, essa mensagem deve ser sincronizada com o nosso CRM; se der errado, devemos entrar em contato com o nosso setor de TI imediatamente.
Nós podemos resolver esse problema conectando a nossa send_sms
a outras tarefas. Nós usamos link
para tarefas que devem ser executadas logo em seguida e link_error
para tarefas que só serão executadas se a tarefa principal falhar.
send_sms.apply_async(
args=[body, customer.phone_number],
link=sync_sms_to_crm.si(customer.pk, message),
link_error=send_email_to_it.si(customer.pk, message)
)
Você pode combinar o linking das tarefas com outras estruturas de workflow do Celery fazendo com seus workflows fiquem mais consistente escrevendo menos código.
Translations
comments powered by Disqus