Доступ к непрерывным данным из вебсокетов в каналах Django
Вопрос:
В файле "apisGo.py" у меня есть два метода, которые получают данные с серверов через веб-сокеты. Эти данные обновляются непрерывно, то есть функция никогда не заканчивается. Проблема в том, что мне нужно получить содержимое переменной "msg" от обоих "apiA" и "apiB" в моем классе "WSConsumer", чтобы я мог отправить его на фронтенд. Каков правильный способ сделать это?
файл apisGo.py
async def apiA():
async with websockets.connect('wss://ws-api...)) as ws:
msg = {"id": "%s" % (uuid),
"type": "",
"topic": "",
"response": True}
msg = json.dumps(msg)
await ws.send(msg)
while True:
msg = await ws.recv()
async def apiB():
async with websockets.connect('wss://ws-api...)) as ws:
msg = {"id": "%s" % (uuid),
"type": "",
"topic": "",
"response": True}
msg = json.dumps(msg)
await ws.send(msg)
while True:
msg = await ws.recv()
async def main():
task1 = asyncio.create_task(apiA())
task2 = asyncio.create_task(apiB())
await asyncio.gather(task1, task2)
if __name__ == "__main__":
asyncio.run(main())
файл "consumers.py":
import apisGo
class WSConsumer(WebsocketConsumer):
def connect(self):
self.accept()
asyncio.run(apisGo.main())
Я думал использовать глобальные переменные в файле "apisGo.py" и использовать "import multiprocessing" в "consumers.py" для создания двух процедур: одна для инициирования запросов "asyncio.run(apisGo.main())", а другая для доступа к глобальным переменным. Но я не уверен, что это правильный подход, я хотел бы получить руководство.