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

Django服务单次执行却重复运行同一进程问题求助

Django runserver/重载时stat loader重复触发同一进程的问题

执行python manage.py runserver命令或重载服务器时,stat loader会针对同一进程运行两次。我通过os.getpid()确认当前存在两个进程,搞不懂为什么单次操作会导致进程重复运行。最近仅对项目做了一个更新——添加了django_cleanup包,我的INSTALLED_APPS配置如下:

INSTALLED_APPS = [
    # Default django apps:
    'ckeditor',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'djmoney',
    'modeltranslation',
    'django.contrib.admin',

    # Installed apps
    'server.pxora',

    # Third party
    'rest_framework',
    'corsheaders',
    'storages',
    'fcm_django',
    'django_celery_beat',
    'phonenumber_field',
    'django_cleanup.apps.CleanupConfig',
]

排查方向与解决建议

  • 先确认django_cleanup是否是诱因
    暂时把django_cleanup.apps.CleanupConfig从INSTALLED_APPS里注释掉,重启服务器看看问题是否消失。因为你最近只加了这个包,大概率是它的逻辑导致的重复触发。

  • 关闭runserver的自动重载测试
    用python manage.py runserver --noreload启动服务器,默认runserver会开两个进程(主进程监控文件变化,工作进程处理请求),如果关闭重载后问题消失,说明是重载逻辑和django_cleanup的信号处理冲突了。

  • 调整INSTALLED_APPS的加载顺序
    你把django.contrib.admin放在了modeltranslation之后,Django的app加载顺序会影响信号注册和初始化流程。试试把django.contrib.admin移到默认apps区域的靠前位置,比如django.contrib.staticfiles后面,再重启测试。

  • 检查自定义/第三方的stat loader逻辑
    如果项目里有自定义的文件状态监控逻辑,或者像modeltranslation这类包有相关的文件监听代码,看看是不是和django_cleanup的逻辑重叠,导致重复触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:10:20