2012-03-15 2 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 

내가 인수하는 오류,하지만 변화를 발견

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

0

server.py : def GET(self) :

을 다음을 포함합니다 :

def GET(self, *args): 

그리고 지금 작동합니다.