2012-11-19 60 views
0

我正在創建一個簡單的網頁遊戲,使用網絡套接字來傳輸更新HTTP AJAX請求的一切(例如登錄系統,用戶配置文件,& c)。不幸的是,我對mod_python有點新,但似乎我想使用Sessions類來跟蹤訪問者。唯一的問題是會話由於某種原因需要mod_python請求。有沒有辦法在mod_pywebsocket處理程序中使用這些會話,還是我需要推出自己的會話機制?我可以在mod_pywebsocket中使用mod_python的Sessions嗎?

+1

你應該看看使用[** mod_wsgi **](http://code.google.com/p/modwsgi/)而不是** mod_python **,它不再處於活躍的開發狀態。 –

+0

問題是pywebsocket似乎是python中最流行的基於apache的websocket實現,並且它使用mod_python,因爲它有點舊。我的理解是,websockets使用端口80,這意味着我需要綁定到Apache,如果我想要HTTP和套接字在同一臺服務器上工作。我不確定WSGI和mod_python會在一起玩。 – Troy

回答

0

如果任何人可以使用這個,我發現mod_python的會話與mod_pywebsocket很好地工作。以下是需要注意的兩點:

初始化通常,您將使用mod_python請求構造一個mod_python會話對象。幸運的是,mod_pywebsocket的作者有着充分的理由使Web套接字請求(您在web_socket_transfer_data參數中獲得的請求)兼容。這意味着您可以像使用mod_python一樣對實例化Session進行實例化(有關示例,請參閱the docs)。這看起來很明顯,但它不是我。如果您在這樣做時發生錯誤,您做了其他事情不對。

會話鎖要記住的另一件事是,與給定ID關聯的會話默認是鎖定的,並且該鎖持續該會話對象的生存期。這意味着如果您有兩個使用來自同一主機的Sessions的Web套接字,其中一個會永久阻塞。另外,文檔指出這些互斥鎖可能需要非平凡的系統資源。它們清楚地設計用於提供快速的HTTP請求,而不是用於持續的面向連接的使用。

解決會話的一種方法是禁用鎖定,但這可能不是一件聰明的事情。我沒有嘗試過,但如果你嘗試這種競賽條件,那麼最好運氣。我所做的只是創建我只需要很短時間的會話,然後在完成時將None分配給它。顯然with子句將不適用於這些會話。再一次,這不是非常模糊,但如果你沒有意識到發生了什麼,它會導致一些頭痛。

相關問題