Пример использования Python Twisted с файловыми дескрипторами

StackOverflow https://stackoverflow.com/questions/2069262

Вопрос

Я хочу использовать Twisted для управления связью по каналам Linux (os.pipe()) и Fifos (os.mkfifo()) между главным процессом и набором подчиненных процессов.Хотя я уверен, что для этих типов файловых дескрипторов можно использоватьwwisted (в конце концов,wwisted отлично подходит для TCP-сокетов, которые *nix абстрагируются как файловые дескрипторы), я не могу найти примеров такого типа использования.У кого-нибудь есть ссылки, пример кода или совет?

Это было полезно?

Решение

В нем нет ничего встроенного для асинхронного ввода-вывода.Кто-то написал обертка либайо за это, но его давно не трогали, и понятия не имею, работает ли он еще.

В худшем случае вы можете использовать select чтобы посмотреть, есть ли что-нибудь, что можно прочитать, но это не поможет вам с письмом.

Другие советы

Вы можете использовать reactor.spawnProcess для настройки произвольных сопоставлений файловых дескрипторов между родительским процессом и дочерним процессом, который он порождает.Например, чтобы запустить программу и предоставить ей два дополнительных выходных дескриптора (помимо stdin, stdout и stderr), с помощью которых она сможет отправлять байты обратно родительскому процессу, вы должны сделать что-то вроде этого:

reactor.spawnProcess(protocol, executable, args,
                     childFDs={0: 'w', 1: 'r', 2: 'r', 3: 'r', 4: 'r'})

Реактор позаботится о создании труб для вас и позвонит childDataReceived на ProcessProtocol вы передаете, когда из них считываются данные.См. Документация по API spawnProcess для получения подробной информации.

Если вы также используете Twisted на дочерней стороне, то вам в основном нужно смотреть на twisted.internet.stdio.stdiodemo.py и stdin.py в основные примеры покажет вам, как использовать этот модуль.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top