关于我的申请的一点BG信息:
我正在编写一个应用程序来将数据从python脚本流式传输到webbrowser。我打算使用Python3中的WebSocket模块来传输数据。我正在传输大量数据,我希望能够在用户休闲时启动和停止流式传输。我最初的计划是运行两个python3 websocket服务器。一个用于接收来自网页的命令(" commander"),另一个用于根据收到的命令流式传输数据。然而,这需要一些我不清楚的事情。
1.。)如何在同一个python脚本中运行两个Websocket服务器,见下文
我正在使用Python3 Websockets模块,使用以下代码没有任何问题:
import asyncio
import websockets
import sys
import time
import multiprocessing
@asyncio.coroutine
def commander_start(websocket,path):
while True:
command = yield from websocket.recv()
if command == 'log':
print("Log Recieved...")
#Set global variable or queue
if command == 'stop':
print("Stop Received...")
#Set global variable or queue
def run_commander():
start_commander = websockets.serve(commander_start,'localhost',5001)
asyncio.get_event_loop().run_until_complete(start_commander)
asyncio.get_event_loop().run_forever()
@asyncio.coroutine
def logger(websocket,path):
a = 0
while True:
#Check global variable, if not set, then exit
print("Logger Test: %d" % a)
a += 1
def run_logger():
start_logger = websockets.serve(logger,'localhost',5002)
asyncio.get_event_loop().run_until_complete(start_logger)
asyncio.get_event_loop().run_forever()
def main():
commander = multiprocessing.Process(target=run_commander)
commander.start()
if __name__ == "__main__":
main()
这完全正常......但是我希望能够同时运行记录器。当我将以下内容添加到main时:
logger_thread = multiprocessing.Logger(target=run_logger)
logger_thread.start()
记录器服务器永远不会启动,我猜测我没有正确理解Python3 Websockets模块的工作方式。
理想情况下,我希望能够启动我的commander_start和logger websockets并在它们之间共享变量。
2.。)如何在这两个线程之间共享信息队列?假设当然我可以在他们自己的线程中运行它们,给出我目前在问题1中解决的约束。)
我不知道从这里去哪里,觉得我碰到了一堵砖墙。