如何自动运行django kronos

时间:2017-07-24 02:39:40

标签: python django

我想用django Kronos比较会员模型的'end_date'和今天每1.a.m.

所以,我安装了'django-Kronos'并在已安装的应用程序中写了'Kronos'。

我在项目的根目录中创建了文件。

from staff.models import Member
from datetime import timedelta
import datetime
import kronos
import random

@kronos.register('1 * * * *')
def the_task():
    today = datetime.date.today() 
    Member.objects.filter(end_date__lte=today).update(Membership_status=0)

为了测试,我写了python manage.py runtask the_task 但是,CommandError: Task 'the_task' not found发生了。

我如何自动运行cron.py?

2 个答案:

答案 0 :(得分:0)

如果您不特别依赖于使用kronos,则可以将其设置为管理命令,以便您可以从终端运行它,如:$ python manage.py the_task

从那里你可以从你的操作系统中将它作为cronjob运行,或者许多托管公司提供可以用来运行这样的计划任务。

要设置管理命令,请在其中一个应用程序目录中创建以下目录结构:management / commands /

命令目录中的

创建一个名为the_task.py的python文件,并对其进行编辑以包含以下代码:

from django.core.management.base import BaseCommand, CommandError
from staff.models import Member
from datetime import timedelta
import datetime

class Command(BaseCommand):

    args = ''

    def handle(self, *args, **options):

        today = datetime.date.today() 
        Member.objects.filter(end_date__lte=today).update(Membership_status=0)

我发现这样做比较简单,除了标准的django之外不需要库,而且很容易测试,因为你也可以从终端运行它。

答案 1 :(得分:0)

来自django-kronos自述文件,“ Kronos从项目根目录和每个应用程序中的cron模块收集任务”。我认为您错过了这一点,即cron任务应位于项目根目录或应用程序目录中定义的cron.py文件中。这就是为什么kronos找不到任务的原因。