微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

添加功能调度时本地Django服务器无响应

如何解决添加功能调度时本地Django服务器无响应

我正在尝试使用 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...

解决方法

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

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

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

我宁愿建议创建一个 command 以便您可以运行 python manage.py test_task,并且在操作系统级别只需添加一个 cron 作业,该作业将每 10 分钟运行一次此命令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。