Разродился вот этим:
async def wait_event(add_callback, del_callback):
ev = asyncio.Event()
def callback(*args, **kwargs):
ev.set()
add_callback(callback)
await ev.wait()
del_callback(callback)
...
await wait_event(my_class.add_some_event_listener, my_class.del_some_event_listener)
my_class
- библиотечный класс из того же проекта. Переводить some_event
на async не хочется, т.к. в некоторых юз кейсах важен порядок обработки ивентов (а в некоторых нет, а в других достаточно дождаться однократного ивента, как в примере выше).
Но детектор говнокода попискивает. Расскажите, как надо. Стоит ли в API класса на каждый event_listener добавить свой async def wait_event()
?
Синтаксис async/await использую ~третий раз в жизни