Просто для начала я использовал Twisted и SocketServer с обоими ForkMixIn, ThreadMixIn и попробовал получатели «пул потоков».
Однако я хотел сделать что-то конкретное в Python.
Небольшой фон. Ранее я писал на C простой демон TCP, который связывался с сокетом и прослушивал его, затем много раз выполнял предварительную ветвь X, а затем просто передавал дескриптор serversocket всем вилкам, и все очень и очень охотно принимали бы клиентов.
Я проверил асинкоры на основе «выбор / опрос», которые мне очень нравятся. Единственное, что я могу сказать, так это то, что я смог немного ослабить нагрузку на ЦП, несколько раз разветвившись, чтобы воспользоваться преимуществами машины с несколькими процессорами и надеяться на лучшее при планировании.
Я не могу заставить это работать на мою жизнь. Только 1 единственный экземпляр может принимать соединения, все остальные просто выдают исключение при обработке соединения, «не может проходить через пустой».
это вообще возможно? Я много проверил, но не смог найти ЛЮБОГО кода для разветвления асинхронных диспетчеров (крик)
Спасибо!
Обновление 1: (полный возврат по запросу)
error: uncaptured python exception, closing channel <__main__.EchoServer listening 0.0.0.0:8001 at 0x2ad4880c93f8> (<type 'exceptions.TypeError'>:'NoneType' /python2.6/asyncore.py|readwrite|99] [/usr/local/python2.6.9/lib/python2.6/asyncore.py|handle_read_event|408] [./6py-server.py|handle_accept|87])
Всегда происходит в accept, независимо от того, произвожу ли я форк перед asyncore.loop и т. Д.
Обновление 2: (полный источник)
Пастбинированный источник