Python select EPOLLEXCLUSIVE Неверный аргумент для Python 3.11.2 и ядра Linux 6.1.0-26-amd64Python

Программы на Python
Ответить
Anonymous
 Python select EPOLLEXCLUSIVE Неверный аргумент для Python 3.11.2 и ядра Linux 6.1.0-26-amd64

Сообщение Anonymous »

Я экспериментирую с модулем Python select.epoll, чтобы увидеть, какие события я могу регистрировать и прослушивать.
Я пытался регистрировать события, используя этот код: р>

Код: Выделить всё

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
Если я удалю select.EPOLLEXCLUSIVE, эта функция завершится успешно.
Кажется странным, что это не работает, когда все другие значения перечисления работают.
В документации сказано:

Добавлено в версии 3.6: добавлен EPOLLEXCLUSIVE. Он поддерживается только Linux Kernel 4.5 или более поздней версии.

но это должно быть нормально, потому что я использую гораздо более позднюю версию Python, чем эта, и гораздо также более новое ядро.

[*]https://docs.python.org/3/library/select.html

Должно ли то, что я пытаюсь работает?

Подробнее здесь: https://stackoverflow.com/questions/792 ... inux-kerne
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»