Tasks processing
################
.. versionadded:: 0.3.0
.. versionchanged:: 0.10.0 Add ``TASKS_TIME_LIMIT`` variable
Tasks processing is done using `Dramatiq `_. It requires Redis and is used for email sending, user data exports and workouts archives uploads.
.. note::
If no workers are running, `CLI <../cli.html>`__ commands allow to process queued tasks.
The following environment variables must be set:
- `REDIS_URL `__: Redis instance used by **Dramatiq** and **Flask-Limiter**.
- `WORKERS_PROCESSES `__: Number of processes used by **Dramatiq**.
- `DRAMATIQ_LOG `__: Path to **Dramatiq** log file.
To avoid long-running tasks for user data exports and workouts archives uploads, a time limit is set:
- `TASKS_TIME_LIMIT `__: Timeout in seconds for **Dramatiq** task execution. The default value is 1800 seconds (30 minutes).
To start task queue workers, run the following command after virtual environment activation:
.. code-block:: bash
$ dramatiq fittrackee.tasks:broker --processes=$WORKERS_PROCESSES --log-file=$DRAMATIQ_LOG
.. note::
| It is also possible to start task queue workers with **Flask-Dramatiq** CLI, but it is recommended to use **Dramatiq** CLI instead for now.
It is possible to run queues independently, for instance for workouts archive uploads:
.. code-block:: bash
$ dramatiq fittrackee.tasks:broker --processes=2 -Q fittrackee_workouts
The following queues are available:
- ``fittrackee_emails``: for emails sending (priority: high)
- ``fittrackee_users_exports``: for user data exports (priority: medium)
- ``fittrackee_workouts``: for workouts archive uploads (priority: medium)
Run ``dramatiq -h`` to see a list of the available commands.