Django + Celery 打造企业级大模型异步任务管理平台 —— 从需求到完整实践(含全模板源码)
如需完整工程文件(含所有模板),可回复获取详细模板代码。
面向人群:自动化测试工程师、企业中后台开发人员、希望提升效率的 AI 业务从业者
核心收获:掌握 Django 三表关系设计、Celery 异步任务实践、基础 Web 交互与前后端分离思路,源码可直接落地,方便二次扩展
一、系统功能全览
本系统以大模型自动化任务管理为核心,涵盖了三大业务场景:
1. 大模型任务管理
- 场景:测试工程师或业务人员通过 Web 页面向企业内已接入的大模型(如 GPT、阿里百川等)发起任务请求,系统后台异步执行任务并实时反馈进度与结果。
- 功能:
- 任务列表:清晰展示任务名称、创建时间、发起人、提问内容、所用大模型、进度
- 任务详情:一键查看输入与大模型返回详情
- 一键新建任务:弹窗表单,选择发起人/模型、填写提示词,任务异步下发
2. 大模型管理
- 场景:平台支持多模型配置、维护,可随时增删编辑,灵活应对不同业务需求或供应商切换。
- 功能:
- 大模型列表:展示所有已接入大模型的关键信息
- 新建/编辑/删除大模型:表单支持 API Key、Base URL、模型名、维护人,快速扩展和维护
3. 人员管理
- 场景:平台中的“发起人”、“维护人”都从人员表下拉选取,方便团队协作与权限追踪。
- 功能:
- 列表、创建、编辑、删除人员,数据基础一目了然
二、系统架构与扩展性说明
- 异步任务:Celery+Redis 组合,任务下发即返回,处理高并发和长耗时 AI 推理毫无压力。
- 表单校验:所有关键字段必填,表单错误友好提示。
- 数据解耦:大模型、人员、任务三表设计,方便后续增加权限、标签等扩展字段。
- 易于二次开发:
- 任务可轻松拓展为定时任务、批量任务、API 任务
- 大模型表可加“模型类型”、“状态”等新字段
- Celery 任务内可真实调用大模型接口,支持异步回调、失败重试等企业级需求
- 权限与安全:可直接结合 Django 用户系统,扩展为企业级权限管理后台
环境准备
-
安装依赖
pip install django celery redis
-
确保本地 Redis 已启动(Windows 下可用)
项目结构
bigmodel_proj/
├── bigmodel_proj/
│ ├── __init__.py
│ ├── celery.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── app/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tasks.py
│ ├── views.py
│ ├── forms.py
│ ├── urls.py
│ └── templates/
│ └── app/
│ └── ... # 所有前端模板
└── manage.py
四、核心代码实现
1. bigmodel_proj/settings.py
(核心配置)
import os
from pathlib import PathBASE_DIR = Path(__file__).resolve().parent.parentSECRET_KEY = 'your-secret-key'
DEBUG = True
ALLOWED_HOSTS = []INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app',
]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]ROOT_URLCONF = 'bigmodel_proj.urls'TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR / 'app' / 'templates'],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]WSGI_APPLICATION = 'bigmodel_proj.wsgi.application'DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = TrueSTATIC_URL = '/static/'# Celery 配置
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
2. bigmodel_proj/celery.py
(Celery 启动入口)
import os
from celery import Celeryos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bigmodel_proj.settings')
app = Celery('bigmodel_proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
bigmodel_proj/__init__.py
:
from .celery import app as celery_app
__all__ = ('celery_app',)
3. app/models.py
(三大核心数据模型)
from django.db import modelsclass Person(models.Model):name = models.CharField(max_length=50, verbose_name="姓名")created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")def __str__(self):return self.nameclass BigModel(models.Model):api_key = models.CharField(max_length=128, verbose_name="API Key")base_url = models.URLField(verbose_name="Base URL")model_name = models.CharField(max_length=100, verbose_name="模型名")maintainer = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True, verbose_name="维护人")created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")updated_at = models.DateTimeField(auto_now=True, verbose_name="修改时间")def __str__(self):return self.model_nameclass BigModelTask(models.Model):STATUS_CHOICES = (('PENDING', '待处理'),('RUNNING', '进行中'),('SUCCESS', '成功'),('FAILURE', '失败'),)name = models.CharField(max_length=100, verbose_name="任务名称")creator = models.ForeignKey(Person, on_delete=models.SET_NULL, null=True, verbose_name="发起人")prompt = models.TextField(verbose_name="用户提问信息")big_model = models.ForeignKey(BigModel, on_delete=models.SET_NULL, null=True, verbose_name="大模型")status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='PENDING', verbose_name="任务进度")created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")detail = models.TextField(blank=True, null=True, verbose_name="大模型请求详情")def __str__(self):return self.name
4. app/tasks.py
(Celery 异步任务)
from celery import shared_task
import time
from .models import BigModelTask@shared_task(bind=True)
def execute_bigmodel_task(self, task_id):try:task = BigModelTask.objects.get(id=task_id)task.status = 'RUNNING'task.save(update_fields=['status'])# 模拟大模型请求耗时time.sleep(5)# 假装请求大模型并返回结果result_detail = f"请求大模型[{task.big_model.model_name}]完成,提示词:{task.prompt}"task.status = 'SUCCESS'task.detail = result_detailtask.save(update_fields=['status', 'detail'])except Exception as e:if task:task.status = 'FAILURE'task.detail = f"异常:{str(e)}"task.save(update_fields=['status', 'detail'])raise
5. app/forms.py
(前端表单)
from django import forms
from
相关文章:
Django + Celery 打造企业级大模型异步任务管理平台 —— 从需求到完整实践(含全模板源码)
如需完整工程文件(含所有模板),可回复获取详细模板代码。 面向人群:自动化测试工程师、企业中后台开发人员、希望提升效率的 AI 业务从业者 核心收获:掌握 Django 三表关系设计、Celery 异步任务实践、基础 Web 交互与前后端分离思路,源码可直接落地,方便二次扩展 一、系…...

TC3xx学习笔记-UCB BMHD使用详解(二)
文章目录 前言Confirmation的定义Dual UCB: Confirmation StatesDual UCB: Errored State or ECC Error in the UCB Confirmation CodesECC Error in the UCB ContentDual Password UCB ORIG and COPY Re-programming UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x 0-3)BMHD Protecti…...

用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践
本文将介绍如何使用Python构建一个自动化工具,实现从MySQL数据库提取员工数据,并为每位员工生成包含定制化表格的PDF报告。通过该方案,可显著提升数据导出效率,避免手动操作误差,同时支持灵活的格式定制。 需求&#…...

实战设计模式之状态模式
概述 作为一种行为设计模式,状态模式允许对象在其内部状态改变时,改变其行为。这种模式通过将状态逻辑从对象中分离出来,并封装到独立的状态类中来实现。每个状态类代表一种特定的状态,拥有自己的一套行为方法。当对象的状态发生变…...
人工智能、机器学习与深度学习:概念解析与内在联系
人工智能、机器学习与深度学习:概念解析与内在联系 一、人工智能(Artificial Intelligence, AI) (一)人工智能的定义 人工智能的定义随着技术发展不断演变。从广义上讲,人工智能是指通过计算机技术实现的…...

什么是着色器 Shader
本人就是图形学结课了,对 OpenGL着色器还有很多疑问嘿嘿 文章目录 为什么要有着色器vshaderfshader 本文围绕 vshader 和 fshader 代码示例讲解。 (着色器代码取自本人简单OpenGL项目 https://github.com/DBWGLX/-OpenGL-3D-Lighting-and-Shadow-Modeli…...

Redis的主从架构
主从模式 全量同步 首先主从同步过程第一步 会先比较replication id 判断是否是第一次同步假设为第一次同步 那么就会 启动bgsave异步生成RDB 同时fork子进程记录生成期间的新数据发送RDB给从节点 清空本地数据写入RDB 增量同步 对比ReplicationID不同因此选择增量同步在Rep…...

博客系统功能测试
博客系统网址:http://8.137.19.140:9090/blog_list.html 主要测试内容 功能测试、界面测试、性能测试、易用性测试、安全测试、兼容性测试、弱网测试、安装卸载测试、压力测试… 测试方法及目的 利用selenium和python编写测试脚本,对博客系统进行的相关…...

【深度学习新浪潮】什么是多模态大模型?
多模态大模型是人工智能领域的前沿技术方向,它融合了多种数据模态(如文本、图像、语音、视频、传感器数据等),并通过大规模参数模型实现跨模态的联合理解与生成。简单来说,这类模型就像人类一样,能同时“看”“听”“读”“说”,并将不同信息关联起来,完成复杂任务。 …...

机器学习前言2
1.机器学习 2.机器学习模型 3.模型评价方法 4.如何选择合适的模型 介绍 机器学习(Machine Learning, ML)是人工智能(AI)的核心分支,致力于通过数据和算法让计算机系统自动“学习”并改进性能,而无需显式编…...

【成品设计】基于Arduino的自动化农业灌溉系统
《基于STM32的单相瞬时值反馈逆变器》 硬件设计: ESP-C3最小系统板:主控芯片,内部集成wifi。土壤湿度传感器:采集土壤湿度。温度传感器:采集土壤温度。水泵模块:水泵继电器软管。按键3个:参数…...

前端页面 JavaScript数据交互
前言:学习JavaScript为前端设置动态效果,实现交互。JavaScript是一种广泛应用于网页开发的脚本语言,它能够使网页变得更加动态和交互性。作为一种客户端脚本语言,JavaScript可以被嵌入到HTML中,并且可以被所有现代的网…...

esp32课设记录(三)mqtt通信记录 附mqtt介绍
目录 安装mqttx(云端部署) 安装mosquitto(本地部署) 编程,连接wifi 编程,连接mqtt,实现数据接收 实际效果展示: 附录:mqtt介绍 工作流程简述: 工作流…...

string类(详解)
【本节目标】 1. 为什么要学习string类 2. 标准库中的string类 3. string类的模拟实现 4. 扩展阅读 1. 为什么学习string类? 1.1 C语言中的字符串 C 语言中,字符串是以 \0 结尾的一些字符的集合,为了操作方便, C 标准库中提供…...

MATLAB | R2025a 更新了哪些有趣的东西?
千呼万唤始出来,MATLAB R2025A 来见面,这次更新比往常晚了两个月,让我们看看更了哪些好玩的新东西叭:首先下载更新启动一气呵成,映入眼帘的是: 1 基本界面 基本界面变得和 MATLAB 网页版一模一样了&#…...

前缀和——和为K的子数组
作者感觉本题稍稍有点难度,看了题解也思考了有一会TWT 显然,暴力我们是不可取的,但这里我们可以采取一种新的遍历数组形式,从后向前,也就是以i位置为结尾的所有子数组,这个子数组只统计i位置之前的。 然后…...
React 第四十二节 Router 中useLoaderData的用途详解
一、前言 useLoaderData,用于在组件中获取路由预加载的数据。它通常与路由配置中的 loader 函数配合使用,用于在页面渲染前异步获取数据(如 API 请求),并将数据直接注入组件,从而简化数据流管理。 二、us…...
千问大模型部署
参考链接:https://zhuanlan.zhihu.com/p/19698254692 tips:部署比较简单,除去上述教程中的步骤外,该文章主要是想记录过程中遇到的问题。因为我是双平台(arm/x86)部署,x86在python3.xx版本成功…...

深入理解 ZAB:ZooKeeper 原子广播协议的工作原理
目录 ZAB 协议:ZooKeeper 如何做到高可用和强一致?🔒ZAB 协议的核心目标 🎯ZAB 协议的关键概念 💡ZAB 协议的运行阶段 🎬阶段一:Leader 选举 (Leader Election) 🗳️阶段二ÿ…...
GO语言语法---if语句
文章目录 1. 基本语法1.1 单分支1.2 双分支1.3 多分支 2. Go特有的if语句特性2.1 条件前可以包含初始化语句2.2 条件表达式不需要括号2.3 必须使用大括号2.4 判断语句所在行数控制 Go语言的if语句用于条件判断,与其他C风格语言类似,但有一些独特的语法特…...
Unix Bourne Shell
本文来源 : 腾讯元宝 Unix Bourne Shell(简称sh)是Unix系统中最经典的命令行解释器(shell),由Stephen Bourne于1977年在贝尔实验室开发,并成为后续众多shell(如bash、ksh等ÿ…...

GraphPad Prism项目的管理
《2025新书现货 GraphPad Prism图表可视化与统计数据分析(视频教学版)雍杨 康巧昆 清华大学出版社教材书籍 9787302686460 GraphPadPrism图表可视化 无规格》【摘要 书评 试读】- 京东图书 GraphPad Prism统计数据分析_夏天又到了的博客-CSDN博客 项目…...

驱动-Linux定时-timer_list
了解内核定时相关基础知识 文章目录 简要介绍timer_list 特点API 函数实验测试程序 - timer_mod.c编译文件-Makefile实验验证 注意事项总结 简要介绍 硬件为内核提供了一个系统定时器来计算流逝的时间(即基于未来时间点的计时方式, 以当前时刻为计时开始…...

STM32F103_LL库+寄存器学习笔记22 - 基础定时器TIM实现1ms周期回调
导言 如上所示,STM32F103有两个基本定时器TIM6与TIM7,所谓「基本定时器」,即功能最简单的定时器。 项目地址: github: LL库: https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_ll_library22_Basic_Timer寄存器方…...

5个yyds的.Net商城开源项目
今天一起来盘点下5个商城开源项目。 1、支持多语言、多商店的商城,.Net7 EF7领域驱动设计架构(Smartstore) 项目简介 Smartstore 支持桌面和移动平台、多语言、多商店、多货币的商城,并支持SEO优化,支持无限数量的…...
C++:与7无关的数
【描述】 一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n < 100)的与7无关的正整数的平方和. 【输入】 输入为一行,正整数n(n < 100) 【输出】 输出一行,包含一个整数,即小于等于n…...

[项目深挖]仿muduo库的并发服务器的解析与优化方案
标题:[项目深挖]仿muduo库的并发服务器的优化方案 水墨不写bug 文章目录 一、buffer 模块(1)线性缓冲区直接扩容---->环形缓冲区定时扩容(只会扩容一次)(2)使用双缓冲(Double Buf…...
c语言与python的异同之处
一、基本语法对比 1. 注释 // C语言单行注释/* C语言多行注释 */# Python单行注释 Python多行注释 2. 变量声明 // C语言int number 10;float price 3.14;char letter A;# Pythonnumber 10price 3.14letter A 3. 条件语句 // C语言if (condition) {// 代码块} else …...

国标GB28181视频平台EasyGBS校园监控方案:多场景应用筑牢安全防线,提升管理效能
一、方案背景 随着校园规模不断扩大,传统监控系统因设备协议不兼容、数据分散管理,导致各系统之间相互独立、数据无法互通共享。在校园安全防范、教学管理以及应急响应过程中,这种割裂状态严重影响工作效率。国标GB28181软件EasyGBS视频云…...
【视频】解决FFmpeg将RTSP转RTMP流时,出现的卡死、出错等问题
【视频】郭老二博文之:图像视频汇总 1、简述 如果不修改图像内容,可以使用FFmpeg命令来将RTSP转RTMP流。 SRS视频服务器就是这么干的,它没有使用FFmpeg接口,而是直接使用FFmpeg命令来转流。 但是在使用中,约到了一些问题,比如转流时卡死、转流出错等等,下面描述怎么解…...