You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地部署Git克隆版Mayan EDMS遇文档不显示、Celery启动失败问题

Mayan EDMS 文档上传后持续提示排队、Celery Worker启动失败排查方案

文档上传后长期停留在New document queued for upload and will be available shortly提示的核心原因是异步任务链路不通:Mayan EDMS 所有文档解析、预览生成、索引构建的后置逻辑全部走Celery异步队列,Worker进程异常退出或未正常运行时,上传任务会全部堆积在Redis队列中无法被消费,前端自然无法展示已上传的文档。

第一步:解决Celery Worker启动失败问题

  • 校验依赖与启动命令正确性
    源码部署场景下禁止直接使用原生celery命令启动Worker,容易出现应用加载路径错误、配置未读取的问题。先在项目根目录激活对应虚拟环境,执行pip install -r requirements.txt完成全量依赖安装,再执行python manage.py check运行Django环境校验,确认无配置类错误后,使用Mayan封装的官方入口启动:
    • 3.x版本:python manage.py celery worker --loglevel=INFO
    • 4.x及以上版本:./manage.py mayan_platform celery_worker
  • 排查Redis连通性问题
    先执行redis-cli ping确认本地Redis服务正常运行,返回PONG才代表服务可用。再核对配置文件中CELERY_BROKER_URL、CELERY_RESULT_BACKEND两个参数,本地部署默认连接地址为redis://127.0.0.1:6379/0,如果本地Redis修改过端口、设置了密码、使用了其他数据库编号,两个参数必须同步修改。
    可以进入Django shell执行代码验证Broker连接是否正常:
    from celery import current_app
    print(current_app.connection().connect())
    
    代码返回True代表连接正常,抛出异常时根据报错信息调整Redis配置即可。
  • 排查权限与缓存问题
    确认MEDIA_ROOT文档存储目录、系统临时文件目录的权限,保证运行Web服务和Worker的用户对两个目录有读写权限,可执行chmod -R 755 <你的MEDIA_ROOT路径> /tmp给足权限,权限不足时Worker读取不到上传的源文件会直接崩溃退出。
    如果启动时提示任务重复注册,递归删除项目下所有__pycache__缓存目录后重试即可。禁止使用root用户启动Worker,Mayan内置的安全校验会直接拦截root用户启动的异步进程。

第二步:验证任务消费链路

  • Worker正常启动后,终端会打印已注册的任务列表,确认列表中包含documents.tasks.task_document_upload等文档处理类任务,代表任务加载正常。
  • 新开终端进入项目虚拟环境,执行python manage.py celery inspect active,能正常返回Worker运行状态代表调度链路通信正常。
  • 执行redis-cli llen celery查看队列长度,正常运行状态下堆积的任务会被逐步消费,队列长度持续下降。如果队列长期无变化,执行python manage.py celery purge清空之前堆积的异常任务,重新上传文档测试即可。
  • 队列消费完成后刷新前端页面,即可正常看到已上传的文档内容,排队提示会自动消失。

注:之前遇到的静态文件异常如果还未修复,执行python manage.py collectstatic --noinput重新收集所有静态资源,保证前端静态资源加载正常即可。

内容的提问来源于stack exchange,提问作者Mursaleen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:01:42