Async runner is a thin wrapper over Celery API. This will enable control over failed messages by moving them to separate queue (generally queue_name_error) and also allows to retry the task with the help of retry policy.
More can be found at documentation: https://async_runner.readthedocs.org
from async_runner import async_runner async_runner.send_task( task_fn=func, # task function can be python module path queue='queue_name', # name of the queue args=(arg1, arg2, arg3, ), # tuple/list of positional arguments to task function kwargs={'name': 'parameter'}, # dictionary with key word arguments to task function options={ 'max_retries': 3, # maximum number of times the task is retried 'retry_policy': { 'retry_interval': 12 # interval between retires (in seconds) } } )
TODO: Decouple from Django