2009年08月27日 星期四 11:08
去邮件列表交流使所有行者受益 ;-) 1对1沟通是种浪费哪,,, 2009/8/27 luob <lbthink在gmail.com>: > 你好,在一个网页上看到了你的网名,见你说了用twisted做过服务器程序 ,特来请教。 > 我在研究twisted中,说异步使用要用deferred,可对deferred一直理解不全,网上信息大都出自相同,执照去做却行不通。 > 我想用deferred去实现像线程一样的功能 ,不知如何 实现, > 如果 可能,能给你个案例参考一下,先行谢谢了。 > > 这是我的原码: > from twisted.internet.protocol import Factory,Protocol > from twisted.internet import reactor,defer > # 生成协议 > class Server_Protocol(Protocol): > > def dataReceived(self,data): > print "Enter receive, data=%s" % data > > > self.factory.get_data(data).addErrback(self.send_err).addCallback(self.send_data) > #上面的代码是希望在数据处理完之后,能自动发送生成的报文,或返回指定的错误 > > #数据将从工厂中取到 ,并发送给客户 > def send_data(self): > sbuf = self.factory.get_send_data() > self.transport.write(sbuf) > > def send_err(self): > print "error" > > def connectionLost(self, reason): > print "server connect is Lost",reason > > #生成工厂 > class Server_Factory(Factory): > protocol = Server_Protocol #为其属性protocol赋值 > > def __init__(self): > print "factory is startup" > > def get_data(self,data): > print "operation data:",data > #处理数据 > self.send_buf = '1234567890' > > d = defer.Deferred() > return d > > def get_send_data(self): > return self.send_buf > > class CallServer: > def __init__(self,port): > print "call callserver" > self.s_factory = Server_Factory() #生成工厂 > > reactor.listenTCP(port,self.s_factory) > reactor.run() > if __name__ == '__main__': > port = 10078 > CallServer(port) > 上面的代码运行后发现get_data没运行啊,客户端没收到信息。 > > > -- > 站在google上看世界! > -- http://zoomquiet.org 人生苦短? Pythonic! 流程是对先前蠢行的内在反应! ~ Clay Shirky (Process is an embedded reaction to prior stupidity)http://bit.l...
Zeuux © 2024
京ICP备05028076号