2012-06-16 65 views
2

我是桌面程序員,但我想了解一些關於web服務的知識。我決定用python。我正在嘗試瞭解Web應用程序的工作方式。我知道如何創建基本的龍捲風網站(請求 - 響應)和工作jabber客戶端,但我不知道如何混合它們。我可以在Web服務中使用任何python組件嗎?它們是否必須具有特定的結構(同步或異步)?因爲我被困在循環處理:龍捲風web應用程序中的Python xmpp jabber客戶端

如果命令龍捲風啓動網絡serwer:

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

...所以如何(在那裏),我就可以開始XMPP循環?

client.connect() 
client.run() 

我認爲,龍捲風聽環路應該處理XMPP聽,但不知道如何

問候。

編輯:我忘了。我正在使用pyxmpp2

回答

0

我相信你正在嘗試完成的是在python的一個線程中不可行的,因爲兩者都試圖在同一時間監聽,這在一個線程中是不可能的。我可能會建議看看this線程教程。

另一個問題是你想要製作一個基於web的xmpp或者只是在同一個腳本中運行一個xmpp & html服務器。如果你想嘗試前者,我建議你看看zeromqqueue

+0

我試圖創建基於Web的XMPP客戶端。感謝您的鏈接 – Dibo

+0

當我試圖在線程中運行xmpp循環時出現錯誤:'thread._local'對象沒有屬性'serializer' – Dibo

+0

用您遇到問題的確切代碼更新您的問題,我會幫助您修復它 – gabeio

0

線程間通信也許WebSocketHandler和線程將幫助你。

演示

 
class BotThread(threading.Thread): 

    def __init__(self,my_jid,settings,on_message): 
     super(BotThread,self).__init__() 
     #EchoBot is pyxmpp2's Client 
     self.bot = EchoBot(my_jid, settings,on_message= on_message) 

    def run(self): 
     self.bot.run() 


class ChatSocketHandler(tornado.websocket.WebSocketHandler): 
    def open(self): 
     #init xmpp client 
     my_jid = 
     settings = 
     bot =BotThread(my_jid, settings,on_message=self.on_message) 
     bot.start()