短缺問題
使用下面我的例子,有沒有與該BaseRequestHandler同學分享my_object
的實際實例的Python的方式嗎?BaseRequestHandler類有一種方法是有效的嗎?
背景
根據定義,BaseRequestHandler類創建用於每個請求的新實例。因此,我正在努力尋找解決方案,以便如何將數據從handle()
函數返回到ProtocolInterface
實例。請注意,如果我需要在handle()
之外執行某些操作,而不是打印到標準輸出,則這可能是錯誤的方法。
在這個時間點,我不相信全局變量會工作,因爲my_object
被通過,預計經常改變(這就是爲什麼handle()
需要看到它。要查看示例客戶端(發送僞造的數據)看到我other SO question。我想我現在面臨的最大的問題是在socketservers在後臺線程中運行。
的,我想什麼爲例做
class ProtocolHandler(SocketServer.BaseRequestHandler):
def handle(self):
while(1):
self.data = self.request.recv(1024)
if self.data == '':
break
self.request.send("Success")
self.my_object.success = True# <--- How can I share my_object's instance?
class ProtocolInterface():
def __init__(self, obj, host='127.0.0.1', port=8000, single_connection=False):
self.my_object = obj # <--- This ideally is the same instance seen in ProtocolHandler
self.host = host
self.port = port
# Create the socket server to process in coming traffic
if(single_connection):
self.server = SocketServer.TCPServer((self.host, self.port), ProtocolHandler)
else:
self.server = SocketServer.ThreadingTCPServer((self.host, self.port), ProtocolHandler)
def start(self):
print "Server Starting on HOST: " + self.host
server_thread = threading.Thread(target=self.server.serve_forever)
server_thread.daemon = True
server_thread.start()
'handle()'''while'循環中的代碼似乎有不正確的縮進? – 2011-12-18 01:29:02
@Francis阿維拉。我猜它是爲你設置線包裹的。減去self.my_object這是一個有效的例子。 – 2011-12-18 01:41:31