Python + asyncore (таймаут)

Модератор: Модераторы разделов

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Python + asyncore

Сообщение nadge »

Есть довольно тривиальный http клиент. Допустим как в примере http://docs.python.org/library/asyncore.html, только клиентов там не один, а, допустим 100.

Допустим, один из клиентов соединился с сервером, а сервер "заглох" - просто ничего не передает. В моей программе это будет довольно часто, т.к. она как раз тестирует доступность серверов.

В таком случае "глохнет" и asyncore.loop(). Я так и не понял, ждет он до бесконечности или когда-нибудь завершится по таймауту, но ждет он слишком долго. Параметр timeout относится, как я понял, не к таймауту самого loop().

Вобщем, надо как-то завершать по некоторому (мною заданному) таймауту функцию loop() или каким-то иным способом решить эту проблему.

Собственно, как?

З.Ы. Какие есть альтернативы asyncore? Нужно что-то легковесное. Тот же twisted вроде подошел бы, но он тяжеловат и его использование (громоздкий код) сильно усложнит мою программу.
Спасибо сказали:
Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Python + asyncore

Сообщение nadge »

Сделал так (это пробный пример):

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

t1 = time.time()
while t1 + 60 > time.time():
asyncore.loop(timeout=0.1, count=100)

Вроде работает как надо.
Спасибо сказали: