Ошибка: р>
ImportError: sys.meta_path is None, Python is likely shutting down
Мне нужно использовать Observer для просмотра файлов конфигурации и перенастройки поведения. Я получаю ошибку только тогда, когда вызываю Observer.stop() и Observer.join() И использую uvloop. Когда я их не вызываю, в выводе нет исключений. Не имеет значения, вызываю ли я функции stop() и join() из асинхронного кода (см. вариант 1) или из синхронного кода (см. вариант 2 (предпочтительный вариант) )).
if sys.platform != 'win32':
import uvloop
uvloop.install()
async def main(loop_container, connector, processor, observer):
loop_container.set_current_event_loop()
try:
connector.connect_exchange()
asyncio.create_task(processor.process_queue_events())
is_connected = await connector.is_connected()
await connector.start_symbol_watchings()
retry_delay = 1
while True:
await asyncio.sleep(retry_delay) # keepalive
# retry logic (...)
except asyncio.CancelledError:
logging.error(f'{Utils.get_current_datetime()} Execution has been cancelled.')
except Exception as exc:
logging.error(f'Unknown Error: {type(exc).__name__} {str(exc)}')
finally:
await connector.disconnect_exchange()
# Option 1
#observer.stop()
#observer.join()
if __name__ == "__main__":
try:
tick_data_queue = asyncio.Queue()
observer = Observer()
loop_container = EventLoopContainer()
config_abs_path = os.path.abspath(CONFIG_FILE_NAME)
output_abs_path = os.path.abspath(OUTPUT_FILE_NAME)
config_reader = ConfigReader(config_abs_path)
state_persister = StatePersister(output_abs_path, config_reader)
connector = ExchangeConnector(loop_container, tick_data_queue, config_reader, state_persister)
processor = TickProcessor(loop_container, tick_data_queue, config_reader, state_persister, connector)
event_handler = FileChangeHandler(loop_container, config_reader, state_persister, connector, processor)
observer.schedule(
event_handler,
path = os.path.dirname(config_abs_path),
recursive = False,
)
observer.start()
main_coro = main(loop_container, connector, processor, observer)
asyncio.run(main_coro)
# Option 2 (preferred)
#observer.stop()
#observer.join()
except Exception as exc::
logging.critical('Terminated.')
Я не получаю эту ошибку, если:
- Я не использую uvloop
- Я не вызываю ни одну из этих функций
Кто-нибудь знает, как решить эту проблему? проблема?
^C
2024-11-14|17:25:17.996 Execution has been cancelled.
2024-11-14|17:25:18.001 [symbol='ETH/USDT:USDT'] Connection error: ExchangeClosedByUser : Connection closed by the user.
2024-11-14|17:25:18.002 [symbol='BTC/USDT:USDT'] Connection error: ExchangeClosedByUser : Connection closed by the user.
2024-11-14|17:25:18.253 Disconnected from the exchange.
--- Logging error ---
--- Logging error ---
--- Logging error ---
--- Logging error ---
Exception ignored in:
Traceback (most recent call last):
File "uvloop/loop.pyx", line 2429, in uvloop.loop.Loop.call_exception_handler
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1548, in error
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1664, in _log
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1680, in handle
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1736, in callHandlers
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1026, in handle
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/handlers.py", line 83, in emit
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1075, in handleError
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 129, in print_exception
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 1044, in __init__
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 492, in _extract_from_extended_frame_gen
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 369, in line
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 350, in _set_lines
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/linecache.py", line 25, in getline
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/linecache.py", line 41, in getlines
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/linecache.py", line 88, in updatecache
ImportError: sys.meta_path is None, Python is likely shutting down
--- Logging error ---
--- Logging error ---
--- Logging error ---
--- Logging error ---
Exception ignored in:
Traceback (most recent call last):
File "uvloop/loop.pyx", line 2429, in uvloop.loop.Loop.call_exception_handler
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1548, in error
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1664, in _log
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1680, in handle
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1736, in callHandlers
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1026, in handle
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/handlers.py", line 83, in emit
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/logging/__init__.py", line 1075, in handleError
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 129, in print_exception
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 1044, in __init__
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 492, in _extract_from_extended_frame_gen
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 369, in line
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/traceback.py", line 350, in _set_lines
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/linecache.py", line 25, in getline
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/linecache.py", line 41, in getlines
File "/home/ubuntu/.pyenv/versions/3.13.0/lib/python3.13/linecache.py", line 88, in updatecache
ImportError: sys.meta_path is None, Python is likely shutting down
Подробнее здесь: https://stackoverflow.com/questions/791 ... p-as-event
Мобильная версия