スレッドを開始してソケットをリッスンし、同じプログラムによって起動される別のアプリケーションに HTTP データを送信する python スクリプトを作成しようとしています。アプリケーションを実行する前に、ソケット サーバーが実行されている必要があります。ただし、ソケットサーバーを実行しているスレッドは、プログラムのそれ以上の実行をブロックし、リッスンしている場所でフリーズします。ダミーコードを入れます。
モジュール 1 では:
def runServer(Port, Host, q):
HTTPServerObj = HTTPServer((Host, Port), RequestHandler)
HTTPServerObj.handle_request()
HTTPServerObj.server_close()
q.put((True, {'messageDoNotDuplicate': 'Data sent successfully by the server'}))
class SpoofHTTPServer(object):
def runServerThread(self):
q = Queue.Queue()
serverThread=Thread(target=runServer, args=(self.Port, self.Host, q))
serverThread.daemon=True
serverThread.start()
result = q.get()
print result
return result
モジュール 2 では:
from module1 import SpoofHTTPServer
spoofHTTPServer = SpoofHTTPServer()
result = spoofHTTPServer.runServerThread()
rc = myApp.start()
スレッドがブロックしているため、 myApp.start() は実行されません。