1
我是这个领域的新手,我目前正在尝试使用cron获取每小时更新一个sqlite数据库(用于django)的python脚本。 这里是脚本Cron脚本运行正常,但没有更新Django数据库
import requests, sys, os, django, csv
sys.path.append("\var[...]\django")
os.environ["DJANGO_SETTINGS_MODULE"] = "s.settings"
django.setup()
from health.models import s_model
import datetime
import logging
#################### initialising log file
today = datetime.datetime.now()
logging.basicConfig(filename="/var/[...]/processing.log", level=logging.INFO)
logging.info("\nScript run at " + str(today) + "\n")
################### getting data from csv and saving it to DB
with open('file.csv', 'rU') as csvfile:
try:
csvreader = csv.reader(csvfile, delimiter=',', quotechar='"')
i=0
for row in csvreader:
if(i>0):
people = {}
people['name'] = notNull(row[0].strip())
people['age'] = notNull(row[1].strip())
people = s_model(**people)
people.save()
i=i+1
except Exception:
logging.error("Error processing number for id "+ str(row["Id"]))
return
的削减版本,我有这个文件坐在cron.hourly
#!/bin/bash
/var/[...]myfile.py
我已经检查:
- 当我检查的django页面数据库中的数据没有更新。
- 当我从它的文件夹手动运行myfile.py时,它运行良好,数据库立即更新。
- cron文件末尾有一个换行符。
- 我检查了权限(cron.hourly文件和myfile.py文件都有+ x权限,并且由root拥有)
- 当我检查日志文件(脚本记录的文件) ,它告诉我脚本每小时运行良好,没有错误。
- 我尝试过“sudo service apache2 restart”,但页面仍未更新。
有没有什么明显的我没有检查?任何帮助或方向将非常感谢!
谢谢!
是您的应用程序在虚拟环境中吗? – fixmycode
此外,为了防止初始化django环境,您可以创建自己的manage.py命令https://docs.djangoproject.com/en/1.11/howto/custom-management-commands/ – SebCorbin
@fixmycode我已经完成了“pip - V“在django文件夹中,它告诉我”从/usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg(python 2.7)的pip 9.0.1“是这个正确的方式来检查虚拟环境? – zibethin