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.
|
||||
|
||||
|
||||
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
|
||||
-------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
.. _asgi:
|
||||
|
||||
ASGI
|
||||
====
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue