Georgy added the comment:
I successfully use my code:
import asyncio, sanic
class MyQueue(asyncio.Queue):
def __aiter__(self): return self
async def __anext__(self): return await self.get()
app = sanic.Sanic()
ws_set = set()
app.static('/', 'async.html')
@app.websocket('/ws')
async def root_ws(request, ws):
ws_set.add(ws)
try:
while True: await ws.recv()
finally: ws_set.remove(ws)
async def postgres():
import aiopg
async with aiopg.create_pool('') as pool:
async with pool.acquire() as connection:
connection._notifies = MyQueue()
async with connection.cursor() as cursor:
await cursor.execute('LISTEN message')
async for message in connection.notifies:
for ws in ws_set: await ws.send(message.payload)
try:
asyncio.get_event_loop().run_until_complete(asyncio.gather(app.create_server(),
postgres()))
except KeyboardInterrupt: asyncio.get_event_loop().stop()
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue28777>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com