forked from orbit-oss/flask
Update documentation on asyncio background tasks
This has been an early question from users, so best to explain.
This commit is contained in:
parent
1c3b53c5db
commit
f74cce164e
2 changed files with 19 additions and 0 deletions
|
|
@ -39,6 +39,23 @@ most use cases, but Flask's async support enables writing and using
|
||||||
code that wasn't possible natively before.
|
code that wasn't possible natively before.
|
||||||
|
|
||||||
|
|
||||||
|
Background tasks
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Async functions will run in an event loop until they complete, at
|
||||||
|
which stage the event loop will stop. This means any additional
|
||||||
|
spawned tasks that haven't completed when the async function completes
|
||||||
|
will be cancelled. Therefore you cannot spawn background tasks, for
|
||||||
|
example via ``asyncio.create_task``.
|
||||||
|
|
||||||
|
If you wish to use background tasks it is best to use a task queue to
|
||||||
|
trigger background work, rather than spawn tasks in a view
|
||||||
|
function. With that in mind you can spawn asyncio tasks by serving
|
||||||
|
Flask with a ASGI server and utilising the asgiref WsgiToAsgi adapter
|
||||||
|
as described in :ref:`asgi`. This works as the adapter creates an
|
||||||
|
event loop that runs continually.
|
||||||
|
|
||||||
|
|
||||||
When to use Quart instead
|
When to use Quart instead
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
.. _asgi:
|
||||||
|
|
||||||
ASGI
|
ASGI
|
||||||
====
|
====
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue