Django:Как использовать "objects.all()" и "for" в async

Я хочу периодически обращаться к информации модели, используя asyncio и threading.

После выборки данных модели с помощью objects.all() в асинхронной корутине возникает ошибка при выполнении цикла for.

You cannot call this from an async context - use a thread or sync_to_async.

---code---

[task.py]
asyncio.run_coroutine_threadsafe(chat.handle(), loop.LOOP)
[chat.py]
async def handle():
    while True:
        users = user.objects.all()
        for user in users:
            print(user.user_id)
        await asyncio.sleep(60)

---Details---

[Website/loop.py]
import asyncio


LOOP = None

def run_loop():
    global LOOP
    LOOP = asyncio.new_event_loop()
    LOOP.run_forever()
[Website/__init__.py]
from Monitoring import loop
import threading
import sys


threading.Thread(target=loop.run_loop).start()

При обращении к тестовой странице, check() в task.py будет работать.

[Monitoring/task.py]]
import asyncio
from Monitoring import chat
from Website import loop


def check():    
    asyncio.run_coroutine_threadsafe(chat.handle(), loop.LOOP)
[Monitoring/chat.py]
import asyncio
from Monitoring.models import User


async def handle():
    while True:
        users = User.objects.all()
        for user in users:
            print(user.user_id)
        await asyncio.sleep(60)
Вернуться на верх