Цикл asyncio блокирует http и websocket запросы django
я пытаюсь создать приложение, где мне нужно постоянно слушать postgres notify listen и отправлять эти сообщения через websocket, а также нужен обычный django apis, я могу запустить оба отдельно, но при инициации db listener он начинает блокировать http или websocket запросы
connection = get_db_conn()
connection.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
cur = connection.cursor()
cur.execute("LISTEN new_item_added;")
async def db_listen():
print('Started Listening to DB notify ...')
while True:
await asyncio.sleep(1)
data = await queue.get()
await NotificationConsumer.send_data(data.payload) # class method to send over websocket
print("message received: ", data.payload)
def listen_callback():
connection.poll()
queue.put_nowait(connection.notifies.pop(0))
# calling this function from django app's __init__.py file
def initiate_db_listener():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.add_reader(connection, listen_callback)
loop.run_until_complete(db_listen())
if __name__ == '__main__':
initiate_db_listener()
я пробовал много вариантов этого, все блокируют основной поток