Есть довольно тривиальный http клиент. Допустим как в примере http://docs.python.org/library/asyncore.html, только клиентов там не один, а, допустим 100.
Допустим, один из клиентов соединился с сервером, а сервер "заглох" - просто ничего не передает. В моей программе это будет довольно часто, т.к. она как раз тестирует доступность серверов.
В таком случае "глохнет" и asyncore.loop(). Я так и не понял, ждет он до бесконечности или когда-нибудь завершится по таймауту, но ждет он слишком долго. Параметр timeout относится, как я понял, не к таймауту самого loop().
Вобщем, надо как-то завершать по некоторому (мною заданному) таймауту функцию loop() или каким-то иным способом решить эту проблему.
Собственно, как?
З.Ы. Какие есть альтернативы asyncore? Нужно что-то легковесное. Тот же twisted вроде подошел бы, но он тяжеловат и его использование (громоздкий код) сильно усложнит мою программу.
Python + asyncore (таймаут)
Модератор: Модераторы разделов
-
nadge
- Сообщения: 1519
- ОС: ArchLinux, Ubuntu 10.10
Re: Python + asyncore
Сделал так (это пробный пример):
Вроде работает как надо.
Код: Выделить всё
t1 = time.time()
while t1 + 60 > time.time():
asyncore.loop(timeout=0.1, count=100)Вроде работает как надо.