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