Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:正在运行Django cron_Django_Django Cron - Fatal编程技术网

Django:正在运行Django cron

Django:正在运行Django cron,django,django-cron,Django,Django Cron,我正在尝试运行,但它似乎只有在访问站点一次后才运行。我正在使用Virtualenv 你知道为什么它只运行一次吗 在我的路径上,我添加了django_cron的位置:'/Users/emilepetrone/Workspace/zapgeo/zapgeo/django_cron' Django应用程序中的My cron.py文件: from django_cron import cronScheduler, Job from products.views import index class

我正在尝试运行,但它似乎只有在访问站点一次后才运行。我正在使用Virtualenv

你知道为什么它只运行一次吗

在我的路径上,我添加了django_cron的位置:'/Users/emilepetrone/Workspace/zapgeo/zapgeo/django_cron'

Django应用程序中的My cron.py文件:

from django_cron import cronScheduler, Job

from products.views import index

class GetProducts(Job):

    run_every = 60

    def job(self):
        index()

cronScheduler.register(GetProducts)

class GetLocation(Job):

    run_every = 60

    def job(self):
        index()

cronScheduler.register(GetLocation)
第一个可能的原因

django\u cron/base.py中有一个变量:

# how often to check if jobs are ready to be run (in seconds)
# in reality if you have a multithreaded server, it may get checked
# more often that this number suggests, so keep an eye on it...
# default value: 300 seconds == 5 min
polling_frequency = getattr(settings, "CRON_POLLING_FREQUENCY", 300)
因此,检查开始任务的时间的最小间隔是轮询频率。您可以通过在项目的settings.py中设置来更改它:

CRON_POLLING_FREQUENCY = 100 # use your custom value in seconds here
要启动作业,请在启动Django web服务器后至少点击服务器一次

第二个可能的原因

您的作业有错误且未排队(如果作业引发异常,则排队标志设置为“f”)。在本例中,它存储在表“django\u cron\u job”字符串值“f”的字段“queued”中。您可以在进行查询时对其进行测试:

选择从django\u cron\u作业排队


如果更改作业代码,则字段可能保留为“f”。因此,如果您更正了作业的错误,您应该在队列字段中手动设置:“t”。或者表django\u cron\u cron中执行的标志为“t”。这意味着你的应用程序。任务正在进行时,服务器已停止。在这种情况下,您应该手动将其设置为“f”。

在我的情况下,它会定期运行(第二次不点击),而不是根据run_every,而是以更大的间隔运行。工具需要最小间隔吗?我找到了第二个原因。请再次查看我的答案。