您如何通过Python(而不是通过Twisted)运行Twisted应用程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您如何通过Python(而不是通过Twisted)运行Twisted应用程序?相关的知识,希望对你有一定的参考价值。

我正在通过学​​习Twisted的方式进行工作,偶然发现了我不确定我非常喜欢的东西-“ Twisted Command Prompt”。我在Windows机器上摆弄Twisted,并尝试运行“聊天”示例:

from twisted.protocols import basic

class MyChat(basic.LineReceiver):
    def connectionMade(self):
        print "Got new client!"
        self.factory.clients.append(self)

    def connectionLost(self, reason):
        print "Lost a client!"
        self.factory.clients.remove(self)

    def lineReceived(self, line):
        print "received", repr(line)
        for c in self.factory.clients:
            c.message(line)

    def message(self, message):
        self.transport.write(message + '
')


from twisted.internet import protocol
from twisted.application import service, internet

factory = protocol.ServerFactory()
factory.protocol = MyChat
factory.clients = []

application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)

但是,要将此应用程序作为Twisted服务器运行,我必须通过“ Twisted Command Prompt”(运行以下命令,并通过以下命令来运行它:

twistd -y chatserver.py

有什么方法可以更改代码(设置Twisted配置设置等),以便我可以通过以下方式简单地运行它:

python chatserver.py

我已经用Google搜索,但是搜索字词似乎太含糊,无法返回任何有意义的回复。

谢谢。

答案

我不知道这是否是最好的方法,但我要做的不是:

application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)

您可以做:

from twisted.internet import reactor
reactor.listenTCP(1025, factory)
reactor.run()

总结,如果您想拥有两个选项(扭曲和python):

if __name__ == '__main__':
    from twisted.internet import reactor
    reactor.listenTCP(1025, factory)
    reactor.run()
else:
    application = service.Application("chatserver")
    internet.TCPServer(1025, factory).setServiceParent(application)

希望有帮助!

另一答案

不要将“扭曲”与“ twistd”混淆。当您使用“ twistd”时,您使用Python运行程序。 “ twistd”是一个Python程序,除其他外,它可以从.tac文件加载应用程序(如您在此处所做的那样。)>“ Twisted Command Prompt”是Twisted安装程序提供的便利,可以帮助Windows上的人们。它所做的只是将%PATH%设置为包含包含“ twistd”程序的目录。如果正确设置%PATH%或使用完整路径调用它,则可以从普通命令提示符下运行扭曲。

如果您对此不满意,也许您可​​以扩展您的问题,以包括使用“ twistd”时遇到的问题的描述。

在Windows上,您可以使用命令创建.bat文件,使用完整路径,然后单击它即可启动。
另一答案
在Windows上,您可以使用命令创建.bat文件,使用完整路径,然后单击它即可启动。
另一答案
也许run模块中的runApptwisted.scripts.twistd之一将为您工作。请告诉我是否可以,非常高兴!
另一答案
我没有用过扭曲的自我。但是,您可以尝试查看twisted是否为python文件本身。我猜想它只是在设法从正确的路径加载适当的扭曲库。
另一答案
我已在Windows上针对Flask网站成功使用了简单的Twisted Web服务器。其他人也可以在Windows上成功使用Twisted来验证该配置吗?

以上是关于您如何通过Python(而不是通过Twisted)运行Twisted应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

python_如何通过twisted实现数据库异步插入?

如何通过python twisted HTTPClient生成POST和GET请求?

如何从twisted.enterprise.adbapi获取数据,而不是“Deferred”对象

windows下python3.6 通过pip安装Twisted模块报utf-8错误的解决办法

使用 Python Twisted 和 Autobahn 从 Matlab 通过 WebSocket 发送 JSON 数据

Win10上Python3通过pip install Twisted安装时出现UnicodeDecodeError