Следующий код представляет собой файл с select.select ():
f = open('node.py')
fd = f.fileno()
while True:
r, w, e = select.select([fd], [], [])
print '>', repr(os.read(fd, 10))
time.sleep(1)
Когда я пытаюсь сделать то же самое с epoll, я получаю сообщение об ошибке:
self._impl.register(fd, events | self.ERROR)
IOError: [Errno 1] Operation not permitted
I 'Мы также читали, что epoll не поддерживает дисковые файлы - или, возможно, это не имеет смысла.
Epoll для обычных файлов
Но почему select ()поддержка файлов диска тогда?Я посмотрел на реализацию в selectmodule.c, и она, кажется, просто проходит через операционную систему, то есть Python не добавляет никакой специальной поддержки.
На более высоком уровне я экспериментирую с лучшим способомобслуживать статические файлы на неблокирующем сервере.Я предполагаю, что я попытаюсь создать потоки ввода / вывода, которые читают с диска и передают данные в основной поток цикла событий, который пишет в сокеты.