Я работаю над проектом 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 "
- я установил daphne, twisted, whitenoise .
- в 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