我正在尝试学习如何使用计划包在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))
答案 0 :(得分:1)
你选错了方法。如果您想安排定期运行的内容,则不应在Web请求中执行此操作。由于wile循环,请求永远不会结束 - 浏览器和Web服务器非常不喜欢这种行为。
相反,您可能希望编写一个独立运行的management command,并负责调用您的任务。
此外,您可能希望阅读Django - Set Up A Scheduled Job? - 他们还会介绍AMPQ和cron等其他方法。但那些将取代您选择的计划模块。