Я хочу добавить тайм-аут для отдельных соединений в моем обработчике запросов для сервера с помощью модуля SocketServer.
Позвольте мне начать с того, что я впервые пытаюсь программировать сети с помощью Python. Я создал подклассы SocketServer.BaseRequestHandler и SocketServer.ThreadingTCPServer и SocketServer.TCPServer, и мне удалось создать два класса с некоторыми базовыми функциями TCP с многопоточностью.
Однако я хотел бы, чтобы мои входящие соединения были тайм-аутом. Попытка переопределить любое из встроенных значений времени ожидания и методов SocketServer не работает, поскольку в документации говорится, что это работает только с разветвленным сервером. Мне удалось создать поток таймера, который срабатывает через X секунд, но из-за характера блокирующего вызова recv в потоке обработчика это бесполезно, так как я был бы вынужден его убить, и это то, что я действительно хотите избежать.
Насколько я понимаю, мне нужна асинхронная реализация, в которой я получаю уведомления и читаю определенный объем данных. В случае, если данные не отправляются в течение 5 секунд, скажем, я хочу закрыть это соединение (я знаю, как это сделать). Я нашел несколько примеров использования asyncore с сокетами, но ни один из них не использует SocketServer. Итак, как я могу реализовать asyncore и threadingTCPserver? Является ли это возможным? Кто-нибудь сделал это?