首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-cron不工作

django-cron不工作
EN

Stack Overflow用户
提问于 2012-08-20 09:20:18
回答 3查看 1.3K关注 0票数 2

正确安装django_cron之后,我在django应用程序中编写了名为cron.py的代码,调用django_cron执行。但是这太奇怪了,这个脚本根本不起作用!

代码语言:javascript
复制
from django_cron import cronScheduler, Job
from mysite.tds.models import machine_list,flavor_list,image_list
from mysite.views import *
import datetime,os

class CheckExpire(Job):
run_every = 60

def job(self):
    mac_list = machine_list.objects.filter(expire_date=datetime.date.today())
    for lst in mac_list:
        delete_vm(lst.servername)
        nagios_delete(lst.servername,lst.machine_ip)
    mac_list.delete()

cronScheduler.register(CheckExpire)

如果我把上面的代码写在其他脚本中并运行这个脚本,那么上面的代码就可以成功地执行,所以这些代码没有错误。

我发布了关于如何安装django-cron的步骤,让你们检查我是否正确地安装了它。

  1. 将“django_cron”放入您的python路径
  2. 将“django_cron”添加到settings.py文件中的INSTALLED_APPS中
  3. 将以下代码添加到urls.py文件的开头(仅在导入之后):import django_cron django_cron.autodiscover()
  4. 在每个安装的应用程序中创建一个名为“cron.py”的文件,您想要向其中添加一个重复作业。
  5. 更新MaxRequestsPerChild中的httpd.conf并将其设置为100
  6. 更新base.py中的django_cron并设置polling_frequency 30(小于run_every)

有人能弄明白为什么django_cron在这种情况下不能工作吗?提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-08-20 12:00:06

我猜您是在守护进程模式下运行mod_wsgi。

第4步建议django-cron在重新加载整个代码库时运行作业,而mod_python或embedded mod_wsgi (embedded)将在Apache重新加载时运行作业,而mod_wsgi (守护进程)则不会。

一个更好的解决方案就是将脚本添加到系统cron中。

如果必须使用django-cron,则需要在DaemonProcess配置的mod_wsgi上设置最大请求,或者将其设置为运行嵌入式。由于性能和可靠性方面的原因,我不能推荐这两种方法。

票数 1
EN

Stack Overflow用户

发布于 2012-10-11 22:55:45

您应该在数据库中签入一些内容:

1-同步数据库后,应该会出现表:'django_cron_cron‘和'django_cron_job’。

2-确保django_cron_job.queued设置为1 (如果您的cron作业崩溃,它将被设置为0并不再运行)

3-确保django_cron_cron.executing设置为0(否则cron认为该作业仍在运行)

票数 0
EN

Stack Overflow用户

发布于 2018-02-07 19:31:09

有时,由于日志的原因,它无法工作。如果在设置中有django日志路径。克伦想用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12035076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档