EchoプロトコルのlineReceivedメソッドでは、子に書き込むたびに遅延オブジェクトを生成したいと思います。結果を待ち、子プロセスによるデータの処理が完了すると、結果を出力します。私はそれをする方法を見つける必要があります。現在、MyPPの関数outReceivedは、子プロセスから結果を取得します。
ありがとうございました
from sys import executable
from os import environ
import os
from twisted.internet import reactor, defer
from twisted.internet.protocol import Protocol
from twisted.internet.protocol import Factory
from twisted.internet import protocol
from twisted.protocols.basic import LineReceiver
import sys
import time
import math
implementation = """
from filter import censor
censor()
"""
class Echo(LineReceiver):
def lineReceived(self, data):
if self.factory.pp == None:
pp = MyPP()
self.factory.pp = reactor.spawnProcess(pp, executable, [executable, "-c", implementation],
env=environ, childFDs = {0:"w", 1:"r", 2:"r"})
self.factory.pp.writeToChild(0, data+'\r\n')
class EchoFactory(Factory):
protocol = Echo
pp = None
class MyPP(protocol.ProcessProtocol):
def connectionMade(self):
print "connectionMade!"
def outReceived(self, data):
pass
reactor.listenTCP(11111, EchoFactory())
print 'in parent', os.getpid()
reactor.run()