首页 > 其他分享 >django异步情况下执行orm操作

django异步情况下执行orm操作

时间:2024-10-14 16:33:57浏览次数:4  
标签:异步 self await django conversation orm user chat id

import asyncio
from channels.db import database_sync_to_async
from .models import Conversation

class LlmConsumer(AsyncWebsocketConsumer):
    def __init__(self, *args, **kwargs):
        super().__init__(args, kwargs)
        self.chat_id = None
        self.conversation = None

    @database_sync_to_async
    def get_conversation(self, pk, user):
        obj, _ = Conversation.objects.get_or_create(id=pk, user=user)
        return obj

    async def connect(self):
        self.chat_id = self.scope["url_route"]["kwargs"]["chat_id"]
        await self.accept()

        # 检查用户是否已登录
        user = self.scope["user"]
        if not user.is_authenticated:
            await self.close(code=4001, reason='Authentication required. Please log in again.')
            return
        else:
            self.conversation = await self.get_conversation(self.chat_id, user)

必须要用await来使用get_conversation

标签:异步,self,await,django,conversation,orm,user,chat,id
From: https://www.cnblogs.com/up-k/p/18464473

相关文章

  • django实现sse接口
    基于django来实现sse最近在实现通过post调用三方的接口得到sse流数据,并且自己需要用拿到的数据用sse流在返回给前端fromrest_framework.viewsimportAPIViewfromdjango.httpimportStreamingHttpResponse,JsonResponseclassChatMessageViewSet(APIView):defpost......
  • CogVideoX:Text-to-Video Diffusion Models with An Expert Transformer
    研究背景背景介绍:这篇文章的研究背景是文本到视频模型的快速发展,特别是Transformer架构和扩散模型的应用。早期尝试预训练和扩展Transformer生成视频已经显示出巨大潜力,如CogVideo和Phenaki。扩散模型在多模态生成方面也取得了显著进展,包括视频生成。研究内容:该问题的......
  • waveform editor安装使用
    参考链接[https://wavedrom.com/tutorial.html][https://blog.csdn.net/Alex497259/article/details/126307849]下载官网网址[https://wavedrom.com/]使用signal代码表示{signal:[{name:"test",wave:"0123456789"},{name:...,wave:...}]}name为姓名,wave中每......
  • transformer的基础知识
    transformer的基础知识transformer网络结构图seq2seq一般Seq2seq会分成两部分:Encoder、Decoder。EncoderTransformer中的Encoder就是用的Self-attention。encoder的内部结构补充:block的内部结构主要由self-attention和全连接神经网络所构成。在原来的论文中......
  • JS异步编程精通之路(一):Callback、Promise、Async/Await 和 Observable 深度对比
    在现代JavaScript编程中,异步操作是常见且必不可少的部分。处理异步的方式多种多样,其中最常见的有Callback、Promise、Async/Await,以及近年来随着响应式编程(ReactiveProgramming)理念兴起的Observable。本文将对这几种异步处理方式进行对比,帮助你理解它们各自的优缺点,以......
  • 第十期机器学习基础 02注意力机制和Transformer/Bert
    一:注意力机制(一)前提背景1.人类的选择性视觉注意力视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无......
  • DevExpress WinForms中文教程:Data Grid - 如何点击获取信息?
    在使用DevExpressWinForms的DataGrid之类控件时,可能需要实现自定义用户交互,例如显示数据行的上下文菜单,或者在双击一行时调用编辑表单。在这些情况下,您需要在指定的坐标处标识网格元素。在本教程中,您将学习如何获取此信息。首先将显示工具提示,指示当前在鼠标光标下的是哪个......
  • Django后台任务调度
    目录1.Celery安装与使用:2.Django-Q特点:安装与使用:3.DjangoBackgroundTasks安装与使用:4.Django-Crontab安装与使用:总结Django提供了几种常用的后台任务调度和执行解决方案。你可以选择根据你的项目需求来实现后台任务,比如定时任务、延时任务、或队列任务。以下是一些常用的......
  • Transformer中的Encoder与Decoder
    参考学习:【超详细】【原理篇&实战篇】一文读懂Transformer-CSDN博客彻底搞懂了Transformer解码器(图文详解)-知乎(zhihu.com)这样图解Transformer应该没人看不懂了吧——多头注意力机制详解_transformer多头注意力机制-CSDN博客本文目标是加强记忆,如果想具体学习点击链接参......
  • Spark常用RDD算子:transformation转换算子以及action触发算子
    文章目录1.算子(方法)介绍2.常用transformation算子2.1map2.2flatMap2.3filter2.4distinct2.6groupBy2.7sortBy()2.8k-v数据[(k,v),(k1,v1)]3.常用action算子1.算子(方法)介绍rdd中封装了各种算子方便进行计算,主要分为两类:transformation转换算子对RDD数......