我正在使用 Django 开发一个网站。我有大约 50 个函数。并且大约需要 1 分钟才能获得所有这些结果。
问题是我在我的应用程序中使用了 heroku。Heroku 有 30 秒的时间来获取请求。有人建议我使用后台任务。现在我在 Python RQ 中使用后台作业。对于每个功能,我在 Views 中做了一个单独的任务。以下是其中一项任务的示例:
task_robots_url = q.enqueue(Robots(url).get_url)
robots_url = task_robots_url.result
现在我需要检查模板中的工作是否完成。完成后,显示结果。
我想每秒检查一次 JS 是否完成了工作。如果尚未完成 - 向用户显示“正在加载...”消息。如果完成 - 显示结果。
这是我的 JS 代码:
<script>
var h1 = document.getElementById("h1");
var job_result = "{{ robots_url }}"
var test = function () {
if (job_result == "") {
h1.innerText = "Waiting...";
} else if (job_result == "None") {
h1.innerText = "Waiting ...";
} else if (job_result == undefined) {
h1.innerText = "Waiting ...";
} else {
clearInterval(inter);
h1.innerText = job_result;
}
}
var inter = setInterval(test, 1000);
</script>
但这不起作用。当结果页面开始时 - 我有一个空的结果。它显示等待。然后我没有结果。它仍然显示等待。但是现在等待之后没有结果。
在 Python RQ 的文档中,据说我应该在我的代码中放置几秒钟的 time.sleep()。如果我把 time.sleep(2) - 我得到了结果。但是,如果我为我的 50 个函数中的每一个添加 time.sleep(2) - 我将得到 100 秒。Heroku中的限制只有30秒......所以我需要在没有sleep()的情况下检查并显示结果......
阿晨1998
相关分类