Создание неблокирующего асинхронного цикла в Python
Необходимо считывать через WebSocket поступающие на клиент сообщения, для этого у меня есть функция подключения к серверу, которая через async for читает содержимое канала с сообщениями.
В моем случае проблема в том, что цикл блокирует последующий код, как можно это исправить?
Главная функция
def main():
clientChat = ClientChat(URL)
singInId = input("Введите ID пользователя: ")
asyncio.run(clientChat.auth(singInId))
print(f"{clientChat.getName()}, Добро пожаловать! Ваш ID - {clientChat.currentID}")
if __name__ == '__main__':
main()
Метод с бесконечным циклом
async def auth(self, userID: str):
subscription = gql("""
...
""")
args = {"UserID": userID}
transport = WebsocketsTransport(url="ws://" + self.url)
async with Client(transport=transport, fetch_schema_from_transport=True) as session:
...
async for message in session.subscribe(subscription, variable_values=args):
print(message)
self.allMessages.append(message)
...
Источник: Stack Overflow на русском