2013-02-15 150 views
1

我嘗試使用web.py創建Web服務器以便與守護進程通信。Web.py守護進程通信

目標是通過HTTP發送命令到我的web.py(在由我的主守護進程打開的線程中執行);然後使用管道將命令傳輸到我的主程序。

最終的程序將有幾個進程和線程,並且web.py接口將成爲軟件的入口點。

我的問題是,web.py實例化每個請求的新類,所以我找不到一個簡單的方法將我的管道傳遞給請求處理程序。我嘗試使用鉤子或處理器,但它似乎並沒有工作。

有人成功地將對象傳遞給web.py處理程序嗎?或者有沒有辦法將對象存儲在Web對象的某個地方?

+0

我試圖創建處理器,但我找不到一種方法將注入的東西添加到handler()函數中。或者我的目標是解析請求,然後使用管道發送命令。我想可能用一個鉤子來創建一個在handler()函數內可讀的變量,但它也不起作用。 – SIkwan 2013-02-15 14:39:09

回答

1

我找到了解決方案,但在文檔中並不清晰。

我剛剛創建使用web.ctx來存儲我的對象load_hook:

def load_hook(): 
    web.ctx.pipe = input_p 

app = web.application(urls, globals()) 
    app.add_processor(web.loadhook(load_hook)) 
    app.run() 

然後我可以在我的所有類訪問web.ctx.pipe。很簡單但很難在文檔中找到。

+0

還要確保鎖定管道通信,因爲它不是線程安全的。 – 2013-02-16 10:03:13