Как асинхронно запускать функцию, которая блокирует управление?

Привет

Либа в примере - python-a2s

Задача:
- Написать функцию, которая асинхронно запускает парсер игровых серверов.
Проблема:
У парсера есть timeout, который блокирует управление. То есть код не выполняется, пока не придёт ответ от игрового сервера.
Вопрос:
Как запускать парсер для нескольких серверов и не спотыкаться о таймаут одного сервера?

# Пример парсера одного сервера
def parse_of_server(server_address):
    try:
        server_info = a2s.info(server_address)
    except:
        server_info = None
    
    return server_info


P.S. Я мучаюсь с asyncio. Если есть другие варианты, то милости прошу
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
dimonchik2013
@dimonchik2013
non progredi est regredi
1) находите любой код асинхронного парсера (asyncio, loop - вот это во все )
2) заменяете вызовы вызовами вашей функции (срабатывание негарантировано)

выбрасываете

читаете про многопоточность и мультипроцессинг
Ответ написан
Комментировать
mvxmvl
@mvxmvl Автор вопроса
Отвечу сам себе. Асинхронно вызывать функцию, в которой есть блокировка управления - плохая идея. Здесь помогла многопоточность (Спасибо dimonchik2013 ). Переписал код.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы