import asyncio
import time
from avala import AsyncClient
async def export_and_wait(client, project_uid, timeout=600, poll_interval=5):
export = await client.exports.create(project=project_uid)
deadline = time.time() + timeout
while time.time() < deadline:
export = await client.exports.get(export.uid)
if export.status == "completed":
return {"project": project_uid, "url": export.download_url}
elif export.status == "failed":
return {"project": project_uid, "error": "Export failed"}
await asyncio.sleep(poll_interval)
return {"project": project_uid, "error": "Timed out"}
async def main():
project_uids = ["proj_001", "proj_002", "proj_003"]
async with AsyncClient() as client:
results = await asyncio.gather(
*[export_and_wait(client, uid) for uid in project_uids]
)
for result in results:
if "url" in result:
print(f"{result['project']}: {result['url']}")
else:
print(f"{result['project']}: FAILED — {result['error']}")
asyncio.run(main())