Cron脚本运行正常,但没有更新Django数据库

时间:2017-06-15 16:36:54

标签: python django sqlite cron

我是这个领域的新手,我目前正在尝试使用cron每小时更新一个sqlite数据库(用于django)的python脚本。 这是脚本的简化版本

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”但页面仍未更新。

有什么明显的我没有检查过吗?任何帮助或方向将非常感谢!

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,所以问题得到解决。只需将其放在此处以防其他任何人遇到它。

1)在cron脚本中的文件位置前面缺少 sudo python 。现在代码运行并更新数据库。

#!/bin/bash
sudo python /var/[...]myfile.py

2)作为第二个问题, myfile.csv 上面的csv文件应该是一个绝对路径(以及脚本中的所有其他路径)。

相关问题