使用计划包在Django中安排任务

时间:2017-09-29 18:01:53

标签: django schedule

我正在尝试学习如何使用计划包在Django中安排任务。这是我添加到视图中的代码。我应该提一下,我只有一个视图,所以我需要在我的索引视图中运行调度程序。我知道代码逻辑中存在问题,它只渲染调度程序并陷入循环中。你能告诉我我怎么能用吗?

def job():
    print "this is scheduled job", str(datetime.now())

def index(request):
    schedule.every(10).second.do(job())
    while True:
        schedule.run_pending()
        time.sleep(1)

    objs= objsdb.objects.all()
    template = loader.get_template('objtest/index.html')
    context= { 'objs': objs}
    return HttpResponse(template.render(context, request))

1 个答案:

答案 0 :(得分:1)

你选错了方法。如果您想安排定期运行的内容,则不应在Web请求中执行此操作。由于wile循环,请求永远不会结束 - 浏览器和Web服务器非常不喜欢这种行为。

相反,您可能希望编写一个独立运行的management command,并负责调用您的任务。

此外,您可能希望阅读Django - Set Up A Scheduled Job? - 他们还会介绍AMPQ和cron等其他方法。但那些将取代您选择的计划模块。