Batching Requests
If you need to make multiple independent requests to the Directus server, you can use async.gather(*requests),
or set the flag as_task of the read, create, update, delete methods.
Then call await directus.gather() to execute the batch.
When
as_taskflag is used the request is added to a list of tasks that will be executed whenawait directus.gather()is called.
Python
import asyncio
from py_directus import Directus
async def with_async_gather(directus: Directus):
tasks = [
directus.collection("directus_users").read(),
directus.collection("directus_files").read(),
]
results = await asyncio.gather(*tasks)
result_1 = results[0]
result_2 = results[1]
print(result_1.items, result_2.items)
async def with_as_task(directus: Directus):
result_1 = await directus.collection("directus_users").read(as_task=True)
result_2 = await directus.collection("directus_files").read(as_task=True)
await directus.gather()
print(result_1.items, result_2.items)
IMPORTANT: cache and as_task cannot be used together, if both are set to True, the cache will take precedence and the request will be awaited.