Arend

arend.arend_task(queue: Optional[str] = None, priority: int = 1, delay: Union[timedelta, int] = 0, max_retries: int = 3, retry_backoff_factor: int = 1, settings: Optional[ArendSettings] = None)

Register functions as arend task

Usage:
>>> from arend import arend_task
>>> from arend.backends.mongo import MongoSettings
>>> from arend.brokers import BeanstalkdSettings
>>> from arend.settings import ArendSettings
>>> from arend.worker import consumer
>>>
>>> settings = ArendSettings(
>>>     beanstalkd=BeanstalkdSettings(host="beanstalkd", port=11300),
>>>     backend=MongoSettings(
>>>         mongo_connection="mongodb://user:pass@mongo:27017",
>>>         mongo_db="db",
>>>         mongo_collection="Tasks"
>>>     ),
>>> )
>>>
>>> @arend_task(queue="my_queue", settings=settings)
>>> def double(num: int):
>>>     return 2 * num
>>>
>>> double(2)  # returns 4
>>> task = double.apply_async(args=(4,))  # It is sent to the queue
>>>
>>> consumer(queue="my_queue", settings=settings)  # consume tasks
>>>
>>> Task = settings.get_backend()  # you can check your result backend
>>> task = Task.get(uuid=task.uuid)
>>> assert task.result == 4
By defining the backend in the environment variables:
>>> from arend import arend_task
>>> from arend.worker import consumer
>>>
>>>
>>> @arend_task(queue="my_queue")
>>> def double(num: int):
>>>     return 2 * num
>>>
>>> double.apply_async(args=(4,))  # It is sent to the queue
>>>
>>> consumer(queue="my_queue")  # consume tasks from the queue