Sometimes we need to link tasks according to the outcomes, similar to an
if/else flow. With Celery is possible to do it using
To give you an idea, let’s say that we need to send an important SMS to our customer. If this succeed, we should sync this SMS to our CRM tool; if something went wrong, we should contact IT right away.
We can do it by linking our
send_sms task to other tasks. We use
link for tasks that must be executed after our main task and
link_error for tasks that should be executed if something goes wrong.
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) )
You can combine linking with other Celery workflow structures making your workflow more consistent on writing less code.
comments powered by Disqus