У меня есть программа Python3, которая запускает « while True » - l oop до остановки, которая иногда сохраняет данные в базе данных MySQL. Я создаю административный веб-сайт, отдельный от программы Python, на котором я смогу наблюдать за этими данными.
Теперь я хочу иметь возможность получать уведомления на веб-сайте, когда были внесены изменения в базу данных. Моя мысль заключалась в том, чтобы настроить соединение с веб-сокетом, чтобы программа Python могла отправлять сообщение через сокет всем подключенным клиентам, то есть всем открытым браузерам, если в таблице базы данных были какие-либо изменения.
Я делал нечто подобное раньше, но в этом случае мне пришлось ждать подключения к веб-сокету до того, как запустится « while True » - l oop. В новом сценарии я хочу иметь возможность иметь несколько клиентов веб-сайта одновременно и позволить им подключаться в любое время, а также отключаться, не прерывая программы Python l oop.
Это упрощенная версия моего предыдущего кода, который я теперь хочу обновить, чтобы иметь возможность запускать как с клиентами websocket, так и без них.
import asyncio
import websockets
socket_server = websockets.serve(run, "127.0.0.1", 5055)
asyncio.get_event_loop().run_until_complete(socket_server)
console_log("Waiting for socket connection...")
asyncio.get_event_loop().run_forever()
async def run(ws):
while True:
db_has_updated = do_stuff()
if db_has_updated:
await ws.send(data)
Кажется, я просто не могу найти правильный поиск условия, чтобы найти решение, поэтому я спрашиваю здесь.