Django计划每天在特定时间执行

时间:2018-12-04 06:56:32

标签: django python-3.x

我有一个django应用程序,我想从远程位置检索一些数据并每天进行00.00 H的处理。如何安排这种过程在后台运行。谢谢。

1 个答案:

答案 0 :(得分:0)

我使用CRON作业来实现这一目标,因此也许在名为tasks的子目录中,创建名为processing.py的文件,然后在其中编写类似以下内容的文件:

import sys
sys.path.append('/srv/drf-root')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.dev")
from django.core.wsgi import get_wsgi_application
from django.conf import settings
application = get_wsgi_application()

# preprocessing code

这使您可以执行以下操作:在运行此代码的第一部分时,您可以像在应用程序的其余部分中一样调用已编写的模型,序列化程序和其他代码,并且无法通过API进行访问,因此使其不受外界影响更加安全。

现在,您可以编写一个调用该文件的shell脚本,以及一堆其他必须执行的任务,例如:

#!/bin/bash
python3 /srv/drf-root/tasks/preprocess.py
python3 /srv/drf-root/tasks/preprocess_part2.py

然后设置CRON来运行此任务:

service crond start
crontab -l | { cat; echo "0 0 * * * /path/to/shell_script.sh"; } | crontab -
service crond restart

请注意,0 0 * * *是每天00:00为您提供服务的时间,为了掌握CRON计时,我建议您使用:https://crontab.guru/#0_0_*_*_* cron-guru-link