如何使用Crontab在Django环境中运行Python文件?

时间:2014-10-21 20:29:57

标签: python django django-models crontab

我尝试制作一个Crontab作业,每天凌晨4点运行一次Python脚本。

这是我的crontab行

0 4 * * * cron_scripts/scripttorun.py

文件正确链接,并且正在尝试执行该文件。但是,当它尝试执行该文件时,它会根据我的导入给出一些错误。 这是我的python文件导致崩溃的部分,它在第一行崩溃,因为它没有正确导入文件...

from history.models import Model1
from users.models import User

我正在尝试使用来自我的Web服务器的其他代码运行Python文件,该代码使用Django。 为了能够导入我的模型,我是否必须做一些额外的事情?

当我运行python scripttorun.py时,我得到了相同的结果。

4 个答案:

答案 0 :(得分:2)

在Django中,您可以编写自定义的django-admin命令。请检查一下:https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

然后,您将包含在crontab文件中:0 4 * * * python /path/to/myapp/manage.py scriptorun.py

答案 1 :(得分:1)

我个人的建议是在app / management / commands / yourcommand.py中创建一个新命令

from django.core.management.base import BaseCommand, CommandError


class Command(BaseCommand):
    help = "Might wanna add a help text"
    args = '<arg>' # need args?

    def handle(self, *args, **options):
        # Do whatever you want to do 

然后从你的crontab运行它。

/path/to/python /path/to/manage.py name_of_command

答案 2 :(得分:0)

你也可以这样做:

<强> do_something.py

#! /usr/bin/python
#coding:utf-8
from __future__ import unicode_literals

import os
os.environ["DJANGO_SETTINGS_MODULE"] = "prj.settings"

from app.models import YourModel

# do something

使用 manage.py

将文件放在同一个位置

如何使用,你可以写一个.sh脚本

cd pjc-directory
python do_something.py

然后使用crontab

运行此脚本

答案 3 :(得分:0)

您应该从Django-extensions

运行脚本命令中获取战利品

它允许您创建简单的Django管理命令,其中包含所有django环境。

然后您可以设置 cron 以定期执行任务。


Django Extensions为您的Django项目提供了其他有用的工具,请看一下。