我正在尝试使用Redis运行heroku flask python应用程序。但是,我遇到以下错误:
at=error code=H12 desc="Request timeout" method=POST path="/uploaderlocal" host=a2n.herokuapp.com dyno=web.1 connect=1ms service=31890ms status=503 bytes=0 protocol=https
heroku网页由于上述错误而崩溃(由于超时),但是后台进程将继续运行。在redis后台队列中的任务完成之前,有什么方法可以停止heroku网页吗?以下是我的代码供您参考。请注意,我要先完成多个Redis排队任务,然后再返回results.html模板。
from rq import Queue
from worker import conn
from rq.job import Job
app = Flask(__name__)
q = Queue(connection=conn)
job1 = q.enqueue_call(func=method1(), args=(), timeout='1h')
job2 = q.enqueue_call(func=method2(), args=(), timeout='1h')
job3 = q.enqueue_call(func=method3(), args=(), timeout='1h')
job4 = q.enqueue_call(func=method4(), args=(), timeout='1h')
the below code attempts (but fails) to stall the return of the #html template before the processes are finished
while(len(q)>0):
time.sleep(1)
return render_template('result.html')
谢谢您的帮助。
答案 0 :(得分:0)
我认为您必须在time.sleep(1)命令前面留一些空格?
在while循环内,变量q的值不会随时更改。因此它将永久睡眠或直接退出。
您需要在while循环中重新评估q,可能如下:
while True:
time.sleep(1)
q = Queue(connection=conn)
if len(q) == 0:
break