This commit is contained in:
doudou201703
2026-08-02 14:07:04 +08:00
commit 046fac6dc1
339 changed files with 19435 additions and 0 deletions
+111
View File
@@ -0,0 +1,111 @@
from typing import cast
import orjson
import pydash
from asgiref.sync import async_to_sync
from channels.layers import BaseChannelLayer, get_channel_layer
from django.core.files.storage import default_storage
from django.core.files.uploadedfile import InMemoryUploadedFile
from django.http import HttpResponseRedirect
from rest_framework import status
from rest_framework.decorators import action
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.routers import DefaultRouter
from rest_framework.viewsets import ViewSet
from django_jwt_token.jwt认证接口 import Jwt身份认证
from sixGuoDjango import BaseResponse, ResData, redis_5
default_channel_layer = cast(BaseChannelLayer, get_channel_layer(alias="default"))
from functools import wraps
import threading
def sync_lock(lock):
def decorator(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
with lock:
return fn(*args, **kwargs)
return wrapper
return decorator
class DemoXiaoViewSets(ViewSet):
lock = threading.Lock() # 所有请求 共享这一个 lock对象
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="zizi")
def 只用于初始化项目测试接口(self, request: Request):
""""""
print("测试接口")
# 可以对用户添加某一类型的积分
# with ThreadPoolExecutor( max_workers=3 ) as executor:
# 返回值 = executor.map( 请求企微, [ 1, 2, 3 ] )
# print( 返回值 )
# for item in 返回值:
# print( item )
xiao = request.data.get("xiao", None)
print(xiao)
商品数据 = request.data.get("商品数据", "")
data = orjson.loads(商品数据)
列表 = pydash.get(obj=data, path="列表")
print(列表, 商品数据)
fileDataList: list[InMemoryUploadedFile] = request.FILES.getlist("fileDataList", None) # 接收多个图片或者文件
for file in fileDataList:
default_storage.save(name=file.name, content=file)
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={}), ).model_dump()
return Response(data=httpResData, status=status.HTTP_200_OK)
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="xiao")
def xiao(self, request: Request):
""""""
openid = "oy4Jw6A1T3WkKOOhMxcbQTDSM8rs"
channels_name = redis_5.get(name="xiaozizi")
async_to_sync(awaitable=default_channel_layer.send)(channel=channels_name,
message={"type": "chat_msg",
"data": {"xiao": "zizi"},
})
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump()
return Response(data=httpResData, status=status.HTTP_200_OK)
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="eventSource")
def sse请求处理接口(self, request: Request):
""""""
print(
"sse请求处理接口sse请求处理接口sse请求处理接口sse请求处理接口sse请求处理接口sse请求处理接口sse请求处理接口sse请求处理接口sse请求处理接口sse请求处理接口")
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump()
return Response(data=httpResData, status=status.HTTP_200_OK)
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="xiaozizi",
authentication_classes=[Jwt身份认证])
# @sync_lock_线程锁( lock=lock )
def xiaozizi(self, request: Request):
pass
return Response(data={"xiao": "111111111111111111"})
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="redirect")
# @sync_lock_线程锁( lock=lock )
def redirect(self, request: Request):
# 接口是用来测试重定向
pass
return HttpResponseRedirect(redirect_to="https://six.sixgou.com/")
# @sync_lock(lock=lock)
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="中文", )
def 中文(self, request: Request):
print("卡异步的请求")
xiaozizi = request.data.get("xiaozizi", None)
print(xiaozizi)
return Response(data={"msg": xiaozizi})
DemoXiaoViewSetsDemoRouter = DefaultRouter()
DemoXiaoViewSetsDemoRouter.register(prefix="", viewset=DemoXiaoViewSets, basename="DemoXiaoViewSets")