您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 将参数传递给扭曲的工厂以传递给会话

5b51 2022/1/14 8:20:46 python 字数 2904 阅读 471 来源 www.jb51.cc/python

我已经编写了一个基于扭曲的sshsimpleserver.py的sshdaemon,效果很好.http://twistedmatrix.com/documents/current/conch/examples/但我现在想要将命令行参数传递给EchoProtocol,以根据参数改变它的行为.我怎样才能做到这一点?在这种情况下,我想通过'options.test

概述

我已经编写了一个基于扭曲的sshsimpleserver.py的sshdaemon,效果很好.

http://twistedmatrix.com/documents/current/conch/examples/

但我现在想要将命令行参数传递给EchoProtocol,以根据参数改变它的行为.
我怎样才能做到这一点?在这种情况下,我想通过
‘options.test’参数到我的协议.

[...]

if __name__ == '__main__':
     parser = optparse.OptionParser()
     parser.add_option('-p','--port',action = 'store',type = 'int',dest = 'port',default = 1235,help = 'server port')
     parser.add_option('-t','--test',type = 
'string',dest = 'test',default = '123')
     (options,args) = parser.parse_args()

     components.registerAdapter(ExampleSession,ExampleAvatar,session.ISession)

     [...]

     reactor.listenTCP(options.port,ExampleFactory())
     reactor.run()

由于会话实例是由工厂创建的,我似乎无法做到
能够将其他args传递给会话构造函数和协议.
我已经尝试将选项名称设置为全局,但它在协议上下文/范围中不可见.

顺便说一句.我将协议类移动到它自己的文件中并将其导入主文件中.

from twisted.internet.protocol import Factory,Protocol
from twisted.internet.endpoints import TCP4ServerEndpoint
from twisted.internet import reactor

class QOTD(Protocol):

    def connectionMade(self):
        # self.factory was set by the factory's default buildProtocol:
        self.transport.write(self.factory.quote + '\r\n')
        self.transport.loseConnection()


class QOTDFactory(Factory):

    # This will be used by the default buildProtocol to create new protocols:
    protocol = QOTD

    def __init__(self,quote=None):
        self.quote = quote or 'An apple a day keeps the doctor away'

endpoint = TCP4ServerEndpoint(reactor,8007)
endpoint.listen(QOTDFactory("configurable quote"))
reactor.run()

总结

以上是编程之家为你收集整理的python – 将参数传递给扭曲的工厂以传递给会话全部内容,希望文章能够帮你解决python – 将参数传递给扭曲的工厂以传递给会话所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶