擅长:python、mysql、java
<p>最近我们可以在Python3.5及更高版本中使用async await。。</p>
<pre><code>async def task1(ws):
async for msg in ws:
if msg.type == WSMsgType.TEXT:
data = msg.data
print(data)
if data:
await ws.send_str('pong')
## ch is a redis channel
async def task2(ch):
async for msg in ch1.iter(encoding="utf-8", decoder=json.loads):
print("receving", msg)
user_token = msg['token']
if user_token in r_cons.keys():
_ws = r_cons[user_token]
await _ws.send_json(msg)
coroutines = list()
coroutines.append(task1(ws))
coroutines.append(task2(ch1))
await asyncio.gather(*coroutines)
</code></pre>
<p>这就是我所做的。当websockets需要等待来自多个源的消息时。</p>
<p>这里的要点是使用asyncio.gather将两个corotine一起运行,就像
@达诺提到。</p>