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