2

我是桌面程序员,但我想学习一些有关 Web 服务的知识。我决定使用python。我正在尝试了解 Web 应用程序的工作原理。我知道如何创建基本的龙卷风网站(请求 - 响应)和工作的 jabber 客户端,但我不知道如何混合它们。我可以在 Web 服务中使用任何 python 组件吗?它们是否必须具有特定的结构(同步或异步)?因为我被困在循环处理程序中:

如果 tornado 通过命令启动网络服务器:

app = Application()
app.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

...那么我如何(在哪里)启动 xmpp 循环?

client.connect()
client.run()

我认为龙卷风监听循环应该处理 xmpp 监听,但不知道如何

问候。

编辑:我忘了。我正在使用 pyxmpp2

4

2 回答 2

0

我相信你想要完成的事情在 python 的一个线程中是不可行的,因为两者都试图同时收听,这在一个线程中是不可能的。我是否可以建议查看有关线程的教程。

另一个问题是您是在尝试制作基于 Web 的 xmpp 还是仅在同一脚本中运行 xmpp 和 html 服务器。如果您想尝试前者,我建议您使用zeromq队列研究线程间通信

于 2012-06-16T21:31:20.220 回答
0

也许 WebSocketHandler 和 Thread 会帮助你。

演示

类 BotThread(threading.Thread):

    def __init__(self,my_jid,settings,on_message):
        超级(BotThread,self).__init__()
        #EchoBot 是 pyxmpp2 的客户端
        self.bot = EchoBot(my_jid, settings,on_message= on_message)

    定义运行(自我):
        self.bot.run()


类 ChatSocketHandler(tornado.websocket.WebSocketHandler):
    定义打开(自我):
        #init xmpp 客户端
        我的_jid =
        设置 =
        bot =BotThread(my_jid, settings,on_message=self.on_message)
        bot.start()

于 2013-08-22T07:14:41.127 回答