Skip to content
Advertisement

How do I pass an async function to a thread target in Python?

I have the following code:

async some_callback(args):
    await some_function()

and I need to give it to a Thread as a target:

_thread = threading.Thread(target=some_callback, args=("some text"))
_thread.start()

The error that I get is “some_callback is never awaited”.
Any ideas how can I solve this problem?

Advertisement

Answer

You can do it by adding function between to execute async:

async def some_callback(args):
    await some_function()

def between_callback(args):
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)

    loop.run_until_complete(some_callback(args))
    loop.close()

_thread = threading.Thread(target=between_callback, args=("some text"))
_thread.start()

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement