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

Local Django server unresponsive when adding function scheduling

我正在尝试使用 Schedule 将函数安排到 运行 每天 图书馆。

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

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

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 语句。

通常人们会使用 celery 中的 periodic_tasks,但这对您的需求来说可能有些矫枉过正。

我宁愿建议创建一个 command 这样你就可以 运行 python manage.py test_task 并且在 os 级别上添加一个 cron 作业将 运行 每 10 分钟执行一次此命令。