2012-03-15 15 views
2

我有一個用Python編寫的桌面小遊戲,希望能夠在遊戲運行時訪問它的內部。我想通過在單獨的線程和服務頁面上運行web.py來做到這一點。所以當我訪問http://localhost:8080/map時,它會顯示當前級別的地圖用於調試目的。如何在另一個應用程序中運行web.py服務器

我得到web.py安裝並運行,但我真的不知道從哪裏去。我嘗試在單獨的線程中啓動web.application,但出於某種原因,我無法在線程之間共享數據(我認爲)。

下面是一個簡單的例子,我正在測試這個想法。我認爲http://localhost:8080/每次都會返回不同的數字,但它會一直顯示相同的數字(5)。如果我在while循環中打印common_value,它將被遞增,但它從5開始。

我在這裏丟失了什麼,並且是接近理智的方法?如果可能,我真的想避免使用數據庫。

import web 
import thread 

urls = (
    '/(.*)', 'hello' 
) 

app = web.application(urls, globals()) 

common_value = 5 

class hello:   
    def GET(self): 
     return str(common_value) 

if __name__ == "__main__": 
    thread.start_new_thread(app.run,())  
    while 1: 
     common_value = common_value + 1 

回答

1
圍繞

有點搜索後,我發現,有效的解決方案:

如果common_value在一個獨立的模塊中定義,並從那裏進口的,上面的代碼工作。因此,在本質(原諒命名):

thingy.py

common_value = 0 

server.py

import web 
import thread 
import thingy 

import sys; sys.path.insert(0, ".") 

urls = (
    '/(.*)', 'hello' 
) 

app = web.application(urls, globals()) 

thingy.common_value = 5 

class hello:   
    def GET(self):    
     return str(thingy.common_value) 

if __name__ == "__main__": 
    thread.start_new_thread(app.run,())  
    while 1: 
     thingy.common_value = thingy.common_value + 1 
+0

'code',def GET(self): return str(thingy.common_value)'code' – Cletrix 2015-11-05 15:43:10

0

我發現參數錯誤回報,但 變化: def GET(self)

與:

def GET(self, *args): 

現在就開始工作。

相關問題