Я пытаюсь иметь только одно соединение с базой данных в своем веб-сокете и возвращать эту информацию каждому подключенному клиенту. Возможно ли это сделать?
Мой текущий код:
import asyncio
import aiopg
import websockets
import logging
import sys
import configparser
config = configparser.ConfigParser()
config.read('config/config.ini')
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logger = logging.getLogger('websockets.server')
logger2 = logging.getLogger('asyncio')
logger2.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())
logger2.addHandler(logging.StreamHandler())
async def listen(websocket, path):
async with aiopg.create_pool(config.get('default', 'connexion_bd'), maxsize=1, pool_recycle=0) as pool:
async with pool.acquire() as conn1:
async with conn1.cursor() as cur:
await cur.execute(config.get('default', 'pg_listen'))
while True:
msg = await conn1.notifies.get()
if msg.payload == 'finish':
return
else:
await websocket.send(msg.payload)
start_server = websockets.serve(listen, 'localhost', config.getint('default', 'port_websocket_server'))
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
В настоящее время каждый раз, когда клиент прослушивает мой веб-сокет, я получаю новое соединение в своей базе данных. Каждый клиент получит одинаковое содержимое, поэтому мне не нужно, чтобы он подключался к базе данных, только мой веб-сокет.
Я пытаюсь разделить свой код (подключиться к другому веб-сокету, который подключается к этому), но я получил та же проблема.
Любые советы будут оценены.
Спасибо