Запустить асинхронный цикл веб-сокетов в фоновом режиме приложения flaskPython

Программы на Python
Anonymous
Запустить асинхронный цикл веб-сокетов в фоновом режиме приложения flask

Сообщение Anonymous »

Я пытаюсь создать приложение, которое будет подключаться к веб-сокету (для потоковой передачи данных) и предоставлять эти данные с помощью API для отдыха. Я использую Flask для создания своего API и пакета websockets для подключения к серверу websocket.
На данный момент это мой код:

Код: Выделить всё

import asyncio
import websockets
from flask import Flask, jsonify

app = Flask(__name__)
websocket = None

async def websocket_setup():
global websocket
uri = 'wss://ws.example.com'
websocket = await websockets.connect(uri)
print("WebSocket connected")

async def websocket_loop():
global websocket
await websocket_setup()
while True:
data = await websocket.recv()
print("Received:", data) # will save to a global variable

@app.get('/')
def home():
return jsonify({'msg':'hello'})
# Will have APIs for get data, send msg to websocket, etc

if __name__ == '__main__':
asyncio.create_task(websocket_loop())
app.run(debug=False)
ошибка:

Код: Выделить всё

RuntimeError: no running event loop
sys:1: RuntimeWarning: coroutine 'websocket_loop' was never awaited
Я сохраняю websocket как глобальную переменную, потому что мне нужно будет использовать ее в своих методах API, например в отправке msg. Я также могу использовать любую другую среду, я пробовал использовать FastAPI и Sanic, но безуспешно.

Подробнее здесь: https://stackoverflow.com/questions/783 ... -flask-app

Вернуться в «Python»