Я обслуживаю запросы от нескольких клиентов XMLRPC через WAN. Это прекрасно работает, скажем, один день (иногда два), а затем останавливается в socket.py:
data = self._sock.recv(self._rbufsize)
_sock.timeout равно -1, _sock.gettimeout равно N *
Ничего особенного я не делаю в основном потоке (просто получаю вызовы XMLRPC), есть еще два потока, взаимодействующих с БД. Оба эти потока работают нормально и переживают этот блок (проверил с WinPdb). Клиенты отправляют запросы размером не более 1 КБ, и специального контента нет: просто красивые и чистые строки в словаре. Между двумя блокировками я обслуживаю десятки тысяч запросов без проблем.
Брандмауэр выключен, на той же машине нет странного программного обеспечения и т.д ...
Я использую Windows XP и Python 2.6.4. Я проверил различия между 2.6.4. и 2.6.5, и не нашел ничего важного (или я ошибаюсь?). 2.7 версия не вариант, так как я бы пропустил двоичные файлы для MySqlDB.
Единственное, что время от времени происходит из-за клиентов с плохим интернет-соединением, - это разрывы сокетов. Это происходит каждые 5-10 минут (каждые 2 секунды к серверу обращаются только пять клиентов).
Я потратил много времени на эту проблему, теперь я начинаю терять идеи, что делать. Любой намек или мысль будут высоко оценены.