【问题标题】:Local Django server unresponsive when adding function scheduling添加功能调度时本地Django服务器无响应
【发布时间】:2021-04-18 17:45:51
【问题描述】:

我正在尝试使用Schedule 安排每天运行的功能 图书馆。

但是,在将计划保存到我的代码后,我的本地 Django 服务器在系统检查期间挂起并且变得无响应。只有当我删除计划代码时,系统检查才会通过并且服务器运行没有问题。

我直接从文档中复制了示例,服务器没有返回任何错误,所以我不确定问题是什么..

views.py

.... 

def test_task():
    user = user.objects.get(pk=1)
    user.task_complete = True
    user.save()

schedule.every(10).minutes.do(test_task)

while True:
    schedule.run_pending()
    time.sleep(1)

....

终端输出(挂在这里)

chaudim@TD app_one % python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

【问题讨论】:

    标签: python django scheduled-tasks schedule


    【解决方案1】:

    Django 根据其设置加载(导入)文件。

    当您将此while 循环置于全局范围内时,它会在导入时执行。它运行while循环,直到完成。而且它从未完成。如果您想亲自查看这是否是根本原因,可以在此处添加 print 语句。

    通常人们从celery 使用periodic_tasks,但这可能对您的需求有点过头了。

    我建议创建一个command,这样您就可以运行python manage.py test_task,然后在操作系统级别添加一个cron 作业,该作业将每10 分钟运行一次此命令。

    【讨论】:

    • 谢谢,我在 while 循环中手动提出了一个异常来确认这一点。如果想继续使用这个库,是否有解决方法?
    • 据我所知,没有。您可能会找到其他一些解决方案,但它们有一些重要的警告。实际上只有两个有意义的选项,cron 和 celery。
    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多