Python 2.7 gae计算时间过长mapreduce 500错误python
我得到了一个GAE代码,但我正在与500错误作斗争,这似乎是由于长时间等待(运行)造成的 我正在做以下工作:Python 2.7 gae计算时间过长mapreduce 500错误python,python-2.7,google-app-engine,mapreduce,google-app-engine-python,Python 2.7,Google App Engine,Mapreduce,Google App Engine Python,我得到了一个GAE代码,但我正在与500错误作斗争,这似乎是由于长时间等待(运行)造成的 我正在做以下工作: 阅读用户给定的信息 运行一些mapreduce方法来计算一些统计数据并将其作为电子邮件发送 (重新)将用户引导至感谢页面,因为结果将通过电子邮件发送 由于没有时间限制,该代码在App engine SDK上运行良好。然而,当我在GAE上运行代码时,我不断得到500错误。如果我没有在步骤2中执行计算,那么代码将再次工作(重定向到新页面并发送电子邮件)。我试着在第三步之后再做第二步,但还是会
class Guestbook(webapp2.RequestHandler):
def post(self):
#get info provided in form by user (code not shown here)
# send them to new page or main page
self.response.write('<html><body>You wrote:<pre>')
self.response.write("thanks")
self.response.write('</pre></body></html>')
#self.redirect('/')
dump_content = 'Error'
try:
dump_content = long_time_taking_mapreduce_method(user_given_info)
except DeadlineExceededError:
logging.warning("Deadline error")
send_results_as_email(OUTPFILE, dump_content)
app = webapp2.WSGIApplication([
('/', MainPage),
('/sign', Guestbook),
], debug=True)
class留言簿(webapp2.RequestHandler):
def post(自我):
#获取用户以表单形式提供的信息(此处未显示代码)
#将它们发送到新页面或主页
self.response.write('youwrite:')
自我回应。写下(“谢谢”)
self.response.write(“”)
#self.redirect(“/”)
转储内容='错误'
尝试:
转储内容=长时间使用mapreduce方法(用户给定信息)
除死线超出错误外:
日志记录。警告(“截止日期错误”)
以电子邮件形式发送结果(输出文件、转储内容)
app=webapp2.WSGIApplication([
(“/”,主页),
(“/签名”,留言簿),
],debug=True)
mapreduce的全部要点在于它离线运行,执行尽可能多的任务,并根据需要执行尽可能长的时间。尝试在处理程序函数中运行它的目的是失败的
相反,您的mapreduce任务本身应该在有结果后调用
以电子邮件的形式发送结果。
方法。您基本上已经自己回答了这个问题。看看任务队列(),它给出了10分钟的截止时间,而不是前端的60秒。如果10分钟还不够,你可以要求你还有多少时间,当你接近最后期限时保存上下文,然后从你停止的地方重新开始任务。谢谢你提供的信息,但我有点困惑。您的意思是在taskqueue中运行mapreduce方法还是只将重定向添加到taksqueue?你能在上面写一些小代码让我有个更好的主意吗。taskqueue文档使我似乎只能在其中运行URL。将长时间\u taking\u mapreduce\u方法(用户给定的\u信息)
调用另一个RequestHandler。由于该请求处理程序将有一个url,您可以在任务队列中对该url进行排队。对于如何在处理程序函数(获取用户参数)之外调用mapreduce的任何建议,我都非常感谢。现在我们可以忽略发送电子邮件,因为它在最后被mapreduce方法调用。谢谢。我第一次尝试的原因是根据教程