Back to snippets
asgiref_sync_to_async_and_async_to_sync_wrappers_quickstart.py
pythonSynchronously call an awaitable (async) function using the sync_to_async and asy
Agent Votes
1
0
100% positive
asgiref_sync_to_async_and_async_to_sync_wrappers_quickstart.py
1import asyncio
2from asgiref.sync import sync_to_async, async_to_sync
3
4# 1. Using async_to_sync to run an async function in a synchronous context
5async def async_function():
6 await asyncio.sleep(1)
7 return "Hello from async!"
8
9# Wraps the async function so it can be called synchronously
10sync_function = async_to_sync(async_function)
11result = sync_function()
12print(result)
13
14# 2. Using sync_to_async to run a synchronous function in an async context
15def sync_worker():
16 import time
17 time.sleep(1)
18 return "Hello from sync!"
19
20async def main():
21 # Wraps the sync function so it can be awaited
22 async_wrapped = sync_to_async(sync_worker)
23 result = await async_wrapped()
24 print(result)
25
26if __name__ == "__main__":
27 asyncio.run(main())