Я работаю над проектом Django, в котором я использую несколько баз данных, и мне нужно получить данные из базы данных MySQL, доступной только для чтения. Я использую метод using() в Django для запроса данных из этой базы данных, доступной только для чтения. Однако, когда я пытаюсь сохранить набор запросов, я сталкиваюсь со следующей ошибкой:

"Application instance <Task pending name='Task-21' coro=<ASGIStaticFilesHandler._call_() running at C:\Users\nihar\envs\backendenvt\Lib\site-packages\django\contrib\staticfiles\handlers.py:101> wait_for=<Future pending cb=[shield.<locals>._outer_done_callback() at C:\Users\nihar\AppData\Local\Programs\Python\Python311\Lib\asyncio\tasks.py:898, Task.task_wakeup()]>> for connection <WebRequest at 0x29eef9ae8d0 method=GET "

<
  1. я установил daphne, twisted, whitenoise
  2. .
  3. в settings.py - INSTALLED_APPS = ['daphne'] MIDDLEWARE = ['whitenoise.middleware.WhiteNoiseMiddleware'] ASGI_APPLICATION = 'BACKEND.asgi.application' 3.view.py code-
async def update_event_notifications_sse_view(request):
    mail_id = request.GET.get('mail_id')
    permission = AsyncNotificationAccessPermission()
    token = request.GET.get('token')
    
    if not await sync_to_async(is_valid_token)(token, mail_id):
        raise PermissionDenied("You do not have permission to access this resource.")

    if not await permission.has_permission(request, view=None):
        raise PermissionDenied("You do not have permission to access this resource.")
    
    async def event_stream():
        yield f"data: {json.dumps(await notifications_list(mail_id))}\n\n"
        
        while True:
            event_occurred = await sync_to_async(update_event_notification.wait)()
            if event_occurred:
                try:
                    yield f"data: {json.dumps(await notifications_list(mail_id))}\n\n"
                    await sync_to_async(update_event_notification.clear)()  # Clear the event flag
                except Exception as e:
                    print(f"Error in event stream: {e}")
                    break
            await asyncio.sleep(60)  

    response = StreamingHttpResponse(event_stream(), content_type='text/event-stream')
    response['Cache-Control'] = 'no-cache'
    return response


async def notifications_list(mail_id):
    if mail_id is not None:
        # Fetch notifications using sync_to_async
        queryset = await sync_to_async(lambda: Notifications.objects.filter(ToUser__MailID=mail_id).order_by('-CreatedAt'))()
        serialized_data = await sync_to_async(lambda: NotificationSerializer(queryset, many=True).data)()
        return serialized_data
Вернуться на верх