view blender/asyncio_thread.py @ 2453:b23afde50bc2

blender addons get thier own pdm setup for now. fix time_from_graph startup race
author drewp@bigasterisk.com
date Sun, 18 May 2025 20:08:35 -0700
parents src/light9/blender/asyncio_thread.py@b8a408caf115
children 405abed9a45c
line wrap: on
line source

import asyncio
from threading import Thread
from typing import Coroutine


def startLoopInThread(task: Coroutine) -> asyncio.AbstractEventLoop:

    def start_background_loop(loop: asyncio.AbstractEventLoop) -> None:
        asyncio.set_event_loop(loop)
        loop.run_forever()

    loop = asyncio.new_event_loop()
    t = Thread(target=start_background_loop, args=(loop,), daemon=True)
    t.start()
    asyncio.run_coroutine_threadsafe(task, loop)
    return loop