Доступ к непрерывным данным из вебсокетов в каналах 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())", а другая для доступа к глобальным переменным. Но я не уверен, что это правильный подход, я хотел бы получить руководство.

Вернуться на верх