Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 gae计算时间过长mapreduce 500错误python_Python 2.7_Google App Engine_Mapreduce_Google App Engine Python - Fatal编程技术网

Python 2.7 gae计算时间过长mapreduce 500错误python

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中执行计算,那么代码将再次工作(重定向到新页面并发送电子邮件)。我试着在第三步之后再做第二步,但还是会

我得到了一个GAE代码,但我正在与500错误作斗争,这似乎是由于长时间等待(运行)造成的

我正在做以下工作:

  • 阅读用户给定的信息
  • 运行一些mapreduce方法来计算一些统计数据并将其作为电子邮件发送
  • (重新)将用户引导至感谢页面,因为结果将通过电子邮件发送
  • 由于没有时间限制,该代码在App engine SDK上运行良好。然而,当我在GAE上运行代码时,我不断得到500错误。如果我没有在步骤2中执行计算,那么代码将再次工作(重定向到新页面并发送电子邮件)。我试着在第三步之后再做第二步,但还是会出现同样的错误

    有什么简单的方法可以解决这个问题吗?我在想一些事情,比如获取用户信息,让他们知道结果将通过电子邮件发送给他们,或者将他们重定向到主页。同时(或在上述操作之后),我可以在后端运行mapreduce并通过电子邮件发送完成的结果,这样时间限制不会中止我的代码

    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方法调用。谢谢。我第一次尝试的原因是根据教程