Ленивое создание цикла событий asyncio создает дубликаты?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ленивое создание цикла событий asyncio создает дубликаты?

Сообщение Anonymous »

У меня есть несколько модулей, которые необходимо запустить в цикле событий asyncio, хотя до момента выполнения я не знаю, какие модули будут загружены. Поэтому при инициализации я хочу убедиться, что действует один (и только один) цикл событий.
Я попробовал следующий код. Я ожидал, что блок кода «A» создаст и будет использовать цикл событий, а блок кода «B» будет использовать тот же цикл событий:

Код: Выделить всё

    try:
loop = asyncio.get_running_loop()  # use existing event loop
logger.info(f'*** A using existing loop {loop}')
except RuntimeError:
loop = asyncio.new_event_loop()    # ... or create and use a new one
asyncio.set_event_loop(loop)
logger.info(f'*** A creating loop {loop}')

try:
loop = asyncio.get_running_loop()  # use existing event loop
logger.info(f'*** B using existing loop {loop}')
except RuntimeError:
loop = asyncio.new_event_loop()    # ... or create and use a new one
asyncio.set_event_loop(loop)
logger.info(f'*** B creating loop {loop}')
Чего я ожидал:

Код: Выделить всё

INFO:builtins:*** A creating loop
INFO:builtins:*** B using existing loop 
Вместо этого он создает два цикла событий:

Код: Выделить всё

INFO:builtins:*** A creating loop
INFO:builtins:*** B creating loop 
(В конечном итоге это приводит к тому, что ошибка RuntimeError привязывает Future к другому циклу.)
Как мне это сделать? динамически создавать цикл событий тогда и только тогда, когда он еще не существует?

Подробнее здесь: https://stackoverflow.com/questions/791 ... duplicates
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»