Django-crontab 无法进行模型查询

问题描述

我在工具应用程序中有一个名为 ApiKeys 的模型,并尝试在特定的时间间隔内更新模型。为此,我使用了 django-crontab。

CRONJOBS = [
    ('*/1 * * * *','tools.cron.reset_api_calls','>>logs.log')
]

功能 -

from .models import ApiKeys

def reset_api_calls():
    try:
        keys = ApiKeys.objects.all()
            for key in keys:
                key.api_calls = 0
                key.save()
    except Exception as e:
        print(e)

模型 -

class ApiKeys(models.Model):
    key_token = models.CharField(max_length=50,primary_key=True)
    api_calls = models.IntegerField(default=0)
    las_used_date = models.DateTimeField(default=timezone.Now)

但它给出了错误日志 - no such table: tools_apikeys

注意:该表确实存在于数据库中,也可以通过 django-shell 和 views.py 访问。

解决方法

它不能那样工作,因为您需要设置 Django 才能使这些命令工作

你有两个选择

  1. 将其实现为 management command

  2. 手动设置 Django 作为脚本的开始。

     import django
     os.environ.setdefault("DJANGO_SETTINGS_MODULE","project.settings")
     django.setup()