Я пытался регистрировать события, используя этот код: р>
Код: Выделить всё
import socket
import select
def main():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as server_socket:
server_socket.bind(('0.0.0.0', 8080))
server_socket.listen(10)
with select.epoll() as epoll:
SELECT_EVENT_TYPES = (
select.EPOLLIN |
select.EPOLLOUT |
select.EPOLLPRI |
select.EPOLLERR |
select.EPOLLHUP |
select.EPOLLET |
select.EPOLLONESHOT |
select.EPOLLEXCLUSIVE | # error
select.EPOLLRDHUP |
select.EPOLLRDNORM |
select.EPOLLRDBAND |
select.EPOLLWRNORM |
select.EPOLLWRBAND |
select.EPOLLMSG
)
epoll.register(server_socket.fileno(), SELECT_EVENT_TYPES)
Код: Выделить всё
epoll.register(server_socket.fileno(), SELECT_EVENT_TYPES)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument
Кажется странным, что это не работает, когда все другие значения перечисления работают.
В документации сказано:
Добавлено в версии 3.6: добавлен EPOLLEXCLUSIVE. Он поддерживается только Linux Kernel 4.5 или более поздней версии.
но это должно быть нормально, потому что я использую гораздо более позднюю версию Python, чем эта, и гораздо также более новое ядро.
[*]https://docs.python.org/3/library/select.html
Должно ли то, что я пытаюсь работает?
Подробнее здесь: https://stackoverflow.com/questions/792 ... inux-kerne
Мобильная версия