Как заменить select () на epoll () в python? - PullRequest
1 голос
/ 04 апреля 2020

Я программирую python сервер чата веб-сокета. Я сделал рабочий сервер, используя функцию select () для прослушивания клиентов, но когда я подключаю более 512 клиентов на Windows или 1024 клиента на Linux, мой сервер падает. После исследования я обнаружил, что это системный лимит, и мне нужно использовать poll () или epoll () для большего количества соединений.

Это часть кода с использованием select (), которую мне нужно переписать с помощью функции epoll () или poll ():

from select import select
rList, wList, xList = select(listeners, writers, listeners, interval)
for ready in wList:
    function1()
for ready in rList:
    function2()
for failed in xList:
    function3()

Как сделать то же самое с помощью epoll () или опрос ()? Все еще нужно вызвать эти функции выше.

1 Ответ

0 голосов
/ 23 апреля 2020

Я считаю, что это должно быть

rList, wList, xList = select.select(listeners, writers, listeners, interval)

Вы можете изменить его на

poll = select.poll()
poll.register(eachconnection)
poll.poll(5000)
...