gpt4 book ai didi

python - django-cron 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:07 30 4
gpt4 key购买 nike

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

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 文件的开头(就在导入之后):导入 django_crondjango_cron.autodiscover()

  4. 在每个要向其添加重复作业的已安装应用中创建一个名为“cron.py”的文件。

  5. 更新httpd.conf中的MaxRequestsPerChild并将其设置为100

  6. 更新django_cron中的base.py并设置polling_frequency 30(小于run_every)

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

最佳答案

我会猜测您正在守护进程模式下运行 mod_wsgi。

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

更好的解决方案是将您的脚本添加到系统 cron。

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

关于python - django-cron 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035076/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com