CodeGeeX在Django项目中集成异步任务【Django集成】

夜晨同学_9181

夜晨同学_9181

2026-04-10

650人浏览

原创

推荐使用celery + redis调度codegeex推理任务,将模型加载与推理卸载至独立worker进程,避免阻塞django主线程,并通过redis保障任务队列可靠性。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

codegeex在django项目中集成异步任务【django集成】

如果您希望在Django项目中利用CodeGeeX模型执行代码生成类异步任务,需绕过同步请求限制并确保模型推理不阻塞Web请求线程。以下是实现该集成的多种可行路径:

一、使用Celery + Redis调度CodeGeeX推理任务

该方法将CodeGeeX的加载与推理过程卸载至独立Worker进程,避免Django主线程被PyTorch/TensorFlow初始化及长时推理阻塞。Redis作为消息代理保障任务队列可靠性。

1、在Django项目根目录下安装依赖:pip install celery redis transformers torch。

2、在Django项目的settings.py中配置Celery参数:CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0',并添加CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1'。

3、在项目主目录(与manage.py同级)创建celery.py,初始化Celery实例,并在__init__.py中导入该实例。

4、新建tasks.py文件,在其中定义任务函数:@shared_task def generate_code_with_codigeeex(prompt: str) -> str:,内部完成CodeGeeX模型加载(建议使用AutoModelForSeq2SeqLM.from_pretrained("THUDM/codegeex-4b"))、tokenizer构建及生成逻辑。

5、在Django视图中调用generate_code_with_codigeeex.delay(prompt)触发异步执行,并返回任务ID供前端轮询结果。

二、采用Django Channels + Daphne运行独立推理协程

此方式利用ASGI协议与Channels的消费者机制,在WebSocket或HTTP长连接上下文中启动隔离的异步协程运行CodeGeeX,适用于需实时流式返回代码片段的场景。

1、安装Channels及相关组件:pip install channels daphne,并在INSTALLED_APPS中添加'channels'。

2、在settings.py中设置ASGI_APPLICATION = 'myproject.asgi.application',并配置CHANNEL_LAYERS为inmemory或redis后端。

Django Unfold
Django Unfold

提供使用 django-unfold (v0.56+) 构建高级 Django 管理界面的专业指导。当用户提及 django-unfold、unfold admin 等内容时使用此技能。

下载

3、编写consumers.py,定义AsyncJsonWebsocketConsumer子类,在receive_json中获取prompt后,使用asyncio.to_thread将模型推理包装为线程池任务,防止协程被阻塞。

4、在推理函数内部,对CodeGeeX模型执行model.generate()时显式指定do_sample=False和max_length=512以控制资源消耗。

5、通过self.send_json({"status": "completed", "code": generated_text})将结果推送给客户端。

三、封装为独立FastAPI微服务并由Django发起HTTP异步调用

该方案将CodeGeeX完全解耦出Django进程,以轻量级FastAPI服务形式提供REST接口,Django仅负责转发请求与响应,消除任何模型加载风险。

1、新建Python项目目录,安装fastapi uvicorn transformers torch,编写main.py定义/generate端点,加载CodeGeeX模型于启动时(@app.on_event("startup"))。

2、在FastAPI服务中禁用CUDA缓存复用:torch.cuda.empty_cache(),并在每次推理前调用model.to('cuda')确保设备一致性。

3、在Django视图中使用aiohttp.ClientSession发起异步POST请求,请求体为JSON格式的prompt字段,超时设为timeout=aiohttp.ClientTimeout(total=120)。

4、FastAPI端点返回结构化JSON,包含"generated_code"与"tokens_used"字段,Django接收后直接透传或做简单清洗。

5、部署时使用uvicorn main:app --host 0.0.0.0:8001 --workers 2启动两个Worker,应对并发推理请求。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

codegeex django 异步任务

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

2026.10.15

0

20

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

2026.10.15

0

18

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

2026.10.15

0

20

VS Code 怎么配置开发环境
VS Code 怎么配置开发环境

VS Code开发环境专题汇集编辑器安装、语言扩展、编译器、解释器、终端和调试配置文章,覆盖Java、Python、C++和PHP等常见语言的入门设置。

2026.10.15

0

18

C++ 开发环境怎么搭建
C++ 开发环境怎么搭建

C++开发环境专题汇集Windows、Linux下的编译器与IDE安装配置教程,涵盖GCC、Clang、Visual Studio、CLion和VS Code,以及编译运行首个程序的步骤。

2026.10.15

0

19

Python 虚拟环境是什么
Python 虚拟环境是什么

Python虚拟环境专题介绍项目依赖隔离的作用,汇集venv与uv创建、激活、退出及解释器切换的相关文章,并覆盖Windows、Linux和VS Code中的常见配置问题。

2026.10.15

0

15

Python 怎么安装并配置环境变量
Python 怎么安装并配置环境变量

Python安装与环境变量配置专题汇集Windows、macOS和Linux的安装步骤、PATH设置、pip配置及常见报错排查文章,帮助完成解释器安装并验证命令行可以正常运行。

2026.10.15

0

15

PHP 连接 MySQL 失败怎么办
PHP 连接 MySQL 失败怎么办

PHP连接MySQL失败专题汇集PDO与MySQLi扩展配置、账号权限、主机端口、套接字和认证方式等排查文章,覆盖连接报错、密码变更与容器环境配置,帮助按错误提示定位原因并修复。

2026.10.15

0

18

PHP 表单提交后如何获取数据
PHP 表单提交后如何获取数据

PHP表单提交后如何获取数据专题汇集HTML表单提交、GET与POST接收、$_POST和$_GET读取、跨文件传值、单选与下拉字段获取,以及空值和接收失败排查等文章,帮助新手完成从提交到处理的完整流程。

2026.10.15

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CodeGeex使用手册
CodeGeex使用手册

共0课时 | 0人学习

Building a URL Shortner with Buffalo
Building a URL Shortner with Buffalo

共0课时 | 0人学习