Windows环境Django新手如何简单实现每小时定时执行fetchfiles管理命令
Windows环境下Django定时执行自定义命令的最简方案
你需要每小时执行python manage.py fetchfiles,以下两个方案都比Celery/cron配置简单,适配Windows系统:
方案1:Windows自带任务计划程序(无需额外安装依赖,优先推荐)
- 第一步:编写批处理执行脚本
在你的Django项目根目录新建run_fetch.bat文件,内容如下,注意替换成你自己的实际路径:
:: 切换到Django项目根目录 cd C:\path\to\your\django\project :: 如果你用了虚拟环境,先激活虚拟环境,全局Python环境可删除这行 call C:\path\to\your\venv\Scripts\activate.bat :: 执行Django自定义命令 python manage.py fetchfiles :: 调试阶段可以保留下面这行看运行日志,正式使用可删除 pause
先双击运行这个bat文件,确认能正常导入数据没问题,再进行后续配置。
- 第二步:配置Windows任务计划
- 按下Win+S搜索「任务计划程序」并打开
- 点击右侧「创建任务」,设置自定义任务名称
- 切换到「触发器」标签,点击「新建」,设置「每日」,重复任务间隔选「1小时」,持续时间选「24小时」,点击确定
- 切换到「操作」标签,点击「新建」,操作选「启动程序」,程序或脚本选择你刚才创建的
run_fetch.bat,「起始于」填写你Django项目的根目录路径 - 切换到「设置」标签,勾选「如果任务失败,按以下频率重新启动」,设置间隔1分钟、尝试3次,也可根据需求勾选「唤醒计算机运行此任务」
- 点击确定保存即可,系统会每小时自动执行数据导入命令。
方案2:Python轻量定时库schedule(适合不想折腾系统配置的场景)
- 第一步:安装依赖
pip install schedule
- 第二步:编写定时执行脚本
在项目根目录新建scheduler.py,内容如下,注意替换实际路径:
import schedule import time import subprocess import os # 填写你的Django项目根目录绝对路径 PROJECT_PATH = r"C:\path\to\your\django\project" # 虚拟环境填对应python.exe路径,全局环境填全局python.exe路径 PYTHON_PATH = r"C:\path\to\your\venv\Scripts\python.exe" def run_fetch(): os.chdir(PROJECT_PATH) subprocess.run([PYTHON_PATH, "manage.py", "fetchfiles"]) # 设置每小时执行一次 schedule.every().hour.do(run_fetch) # 启动后先执行一次测试 run_fetch() print("定时任务已启动,每小时执行一次数据导入") while True: schedule.run_pending() time.sleep(1)
- 第三步:运行脚本
直接在PyCharm终端执行python scheduler.py即可启动定时任务,如果需要开机自动后台运行,可以用NSSM工具把这个脚本注册成Windows系统服务。
额外优化建议
你提供的fetchfiles自定义命令可以做两个小调整避免后续问题:
- 硬编码的API_KEY建议迁移到Django的
settings.py中配置,调用时用from django.conf import settings读取即可 - 批量插入数据前可以先根据
time_vector、station等字段做去重判断,避免每小时导入重复数据到数据库
内容的提问来源于stack exchange,提问作者Sid33
相关产品推荐
相关产品推荐

