GVKun编程网logo

Google App Engine python入站邮件LookupError:未知编码(谷歌有未知错误阻止了)

3

本文将介绍GoogleAppEnginepython入站邮件LookupError:未知编码的详细情况,特别是关于谷歌有未知错误阻止了的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地

本文将介绍Google App Engine python入站邮件LookupError:未知编码的详细情况,特别是关于谷歌有未知错误阻止了的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API、Google App Engine 正式支持 Python 2.7、Google App Engine 正式支持Python 2.7、Google App Engine(python):TemplateSyntaxError:带有五个单词的'for'语句应以'reversed'结尾的知识。

本文目录一览:

Google App Engine python入站邮件LookupError:未知编码(谷歌有未知错误阻止了)

Google App Engine python入站邮件LookupError:未知编码(谷歌有未知错误阻止了)

按照docs中的示例,我正在使用“标准”入站邮件处理程序接收到我的Google App Engine应用程序的入站电子邮件。

似乎发送给应用程序的某些电子邮件消息(不是由我发送)导致电子邮件api抛出LookupError:未知编码异常。请参阅回溯。

据我所知,此异常是在调用应用程序的邮件处理程序之前引发的,显然使它无法被应用程序的代码捕获和处理。真的是这样吗?

似乎App Engine每隔大约40分钟重试一次失败的消息,这会继续产生错误(和警报…),是否有任何方法可以中止此操作?

谢谢你的帮助。

追溯:

追溯(最近一次通话):  __call__中的文件“ /base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”,第1535行    rv = self.handle_exception(请求,响应,e)  __call__中的文件“ /base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”,第1529行    rv = self.router.dispatch(请求,响应)  文件“ /base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”,行1278,位于default_dispatcher中    返回route.handler_adapter(请求,响应)  __call__中的文件“ /base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”,第1102行    返回handler.dispatch()  在分派中的文件“ /base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”,第572行    返回self.handle_exception(e,self.app.debug)  在分派中的文件“ /base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”,第570行    返回方法(* args,** kwargs)  文件“ /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/webapp/mail_handlers.py”,第70行    self.receive(mail.InboundEmailMessage(self.request.body))  __init__文件“ /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第939行    self.update_from_mime_message(mime_message)  文件“ /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,行1513,位于update_from_mime_message中    超级(InboundEmailMessage,self).update_from_mime_message(mime_message)  在update_from_mime_message中的文件“ /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,行1422    超级(EmailMessage,self).update_from_mime_message(mime_message)  文件“ /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,行1291,位于update_from_mime_message中    主题= _decode_and_join_header(mime_message [''subject''],分隔符= u'''')  _decode_and_join_header中的文件“ /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”,第597行    对于s,email.header.decode_header(header)中的字符集  在第597行中输入文件“ /base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/mail.py”     对于s,email.header.decode_header(header)中的字符集LookupError:未知编码:iso-8859-8-i

答案1

小编典典

post调用入站邮件处理程序的方法时发生错误。

  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/webapp/mail_handlers.py", line 70, in post    self.receive(mail.InboundEmailMessage(self.request.body))

最简单的解决方案是post在您自己的处理程序中覆盖该方法以捕获错误:

import loggingfrom google.appengine.ext.webapp.mail_handlers import InboundMailHandlerclass MyInboundMailHandler(InboundMailHandler):    def post(self):        try:            super(MyInboundMailHandler, self).post()        except LookupError as ex:            logging.warning(''Could not process message because %s.'', ex)    def receive(self, mail_message):        # Process message

如果不想丢失消息,可以创建并注册自定义iso-8859-8-i编解码器。

Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API

Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API

如何解决Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API?

不知道是否可以直接从应用程序停止和启动一个 Flex Google App 版本的版本?

不是由 gcloud 客户端...

显然它是通过 gcloud 命令工作的:gcloud app versions stop/start <version>

...就像在 Google Web 界面中一样...

我查看了按钮启动/停止运行良好的 Google Web 服务。请求被传递到 url :

https://console.cloud.google.com/m/operations?operationType=cloud-console.appengine.stopStartVersions&pid=<PROJECT-NAME>&hl=fr

有了这个数据:

 {"pid":"<PROJECT-NAME>","serviceId":"<SERVICE-ID>","versionId":"<VERSION-ID>","serving":true,"descriptionLocalizationKey":"gaeStopStartVersions","descriptionLocalizationArgs":{"serving":"true","versionId":"<VERSION-ID>"}}

...但通过 Python API

我尝试遵循有关修补版本的文档。此代码或示例:

from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
appengine = discovery.build(''appengine'',''v1'',credentials=credentials)
apps = appengine.apps()
apps.services().versions().patch(appsId=''<ID-APP>'',servicesId=''<ID-SERVICE>'',versionsId="<ID-VERSION>",body = {''servingStatus'': ''STOPPED''},updateMask=''servingStatus'').execute()

这是有效的。版本停止和实例关闭。但是,当我对 SERVING 执行相同操作时,版本会打开,但不会创建实例。

有人已经成功地做到了这一点吗?

预先感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Google App Engine 正式支持 Python 2.7

Google App Engine 正式支持 Python 2.7

最近,Google在其Google App Engine(以下简称GAE)官方博客上宣布正式支持Python 2.7,对开发者来说又多了一种选择。

GAE在几个月之前实验性的引入了Python 2.7环境,此后一直在修改缺陷和进行优化。随着这次Python 2.7的正式支持,相信对开发人员更有帮助:

首先,它支持程序利用并发请求,帮助开发者构建更加稳定、高效的应用。如果你的应用没有完全利用CPU,那么你现在有机会通过并发请求来降低实例的数量。

同时,我们还增加了开发者迫切需要的工具库,包括PIL、NumPy和lxml等,这些库已经被开发者提了将近两千次了。

通过使用GAE,用户可以在Google 基础架构上运行网络应用程序,目前GAE支持使用几种编程语言编写的应用程序,包括Java、Python(2.5和2.7)、Go等语言。

相比2.5版,Python 2.7提供了更多的特性和工具库,开发者可以更加得心应手:

  1. 多线程——2.5不支持此特性,在2.7中,开发者可以利用多线程库。单个请求中的所有线程必须在请求时限(在线请求为60秒,离线请求为10分钟)之前完成。
  2. 并发请求——2.5不支持此特性,现在开发者可以在GAE中修改配置来支持并发请求。
  3. 字节码修改——在2.5版本中由于运行时的限制无法修改字节码,Python 2.7不再包括此限制。生成和处理字节码的工具库可以在运行时正常工作。
  4. 字节码上传——2.5版不支持,Python 2.7可以上传.pyc文件,但是不能和.py一起,但是可以上传包含.py和.pyc文件的.zip文件。

除此之外,两版之间的区别还包括对数据存储的支持、Django、JSON等工具库的版本更新等等。

GAE的Python 2.7运行时环境支持一下第三方工具库:

  1. lxml(2.3)——lxml工具库支持开发者更加方便的处理XML和HTML文档,对于GAE上Web服务的开发人员来说,是个必不可少的工具。
  2. jinja2(2.6)——Jinja2是 基于python的多功能的被广泛使用的模板引擎,功能比较类似于于PHP的Smarty、J2EE的Freemarker和Velocity。 它支持Unicode,并具有集成的沙箱执行环境,Jinja2模板引擎弥补了Django自带模板系统许多不足。Python 2.7不再推荐使用WebApp模板,jinja2成为了替代者。
  3. MarkupSafe(0.15)——MarkupSafe为XML、HTML和XHTML提供了安全转义的字符串。
  4. NumPy(1.6.1)——Numpy提供了若干数据处理的工具。
  5. PIL(1.1.7)——全称为Python Imaging Library,提供了许多用于处理图片的函数。
  6. PyCrypto(2.3)——全称为Python Cryptography Toolkit,提供了许多密码学算法函数,比如随机数生成等。
  7. setuptools(0.6c11)——帮助开发者下载、构建、安装、升级和卸载Python包。
  8. WebOb(1.1.1)——对HTTP请求和响应做了面向对象的封装,GAE将其作为webapp框架的一部分。
  9. YAML(3.10)——支持可读性高的消息序列化数据格式,GAE SDK使用YAML作为其配置文件的格式。

除了Python语言之外,GAE还支持Java和Go语言(实验阶段):

Google App Engine 支持 Java 5 和 Java 6。在 App Engine 上运行 Java 应用程序时,将使用 Java 6 虚拟机 (JVM) 和标准库运行该应用程序。理想情况下,开发者应使用 Java 6 编译和测试应用程序,以确保本地服务器的工作方式与 App Engine 类似。

App Engine SDK 与 Java 5 兼容,这非常适用于不能方便获取 Java 6 的开发人员(如使用 Mac OS X 的开发人员)。开发者可以将使用 Java 5 编译的类和 JAR 上传到 App Engine。

崔康 热情的技术探索者,资深软件工程师,InfoQ编辑,从事企业级Web应用的相关工作,关注性能优化、Web技术、浏览器等领域

Google App Engine 正式支持Python 2.7

Google App Engine 正式支持Python 2.7

Google App Engine团队今天在博客中宣布Python 2.7 Runtime for App Engine正式发布。

Google在之前发布的App Engine版本中,试验性地加入了对Python 2.7的支持,经过了这段时间的bug修复和性能优化,现在已经完全支持Python 2.7。

App Engine团队称,Python 2.7 runtime for App Engine的发布,对于开发者来说向前迈了一大步,首先,该运行时允许应用程序利用并发请求的优势,允许开发者创建更高性能、高效率的应用程序。如果你的应用程序没有完全利用CPU,你可以使用并发请求去减少实例总数,以更少的资源来实现更多的服务。

此外,Python 2.7运行时中还添加了一些库,包括PIL、NumPy和 lxml等,这些库都是开发者强烈要求添加的。你可以通过这个列表来查看所支持的库。

App Engine SDK for Python下载:http://code.google.com/intl/zh-CN/appengine/downloads.html

开发文档:http://code.google.com/intl/zh-CN/appengine/docs/python/gettingstartedpython27/

Via Googleappengine

Google App Engine(python):TemplateSyntaxError:带有五个单词的'for'语句应以'reversed'结尾

Google App Engine(python):TemplateSyntaxError:带有五个单词的'for'语句应以'reversed'结尾

如何解决Google App Engine(python):TemplateSyntaxError:带有五个单词的''for''语句应以''reversed''结尾?

这是使用Web应用程序框架,而不是Django。

但是除了框架,您必须使用Django的模板-显然是在旧版本中,该版本不支持“自动拆包”样式for-可能是App Engine的默认版本0.96。要使用更现代的Django的任何部分(包括“仅模板”),您必须具有一个settings.py文件并执行以下操作:

import os
os.environ[''DJANGO_SETTINGS_MODULE''] = ''settings''

from google.appengine.dist import use_library
use_library(''django'', ''1.1'')

根据docs。之后,您from django import template将可以使用Django的模板引擎的1.1版本。

解决方法

这是使用Web应用程序框架,而不是Django。

以下模板代码为我提供了 TemplateSyntaxError: 当我尝试呈现字典时, 包含五个单词的’for’语句应以’reversed’
错误 结尾 。我不明白是什么原因导致此错误。有人可以帮我一下吗?

{% for code,name in charts.items %}
   <option value="{{code}}">{{name}}</option>
{% endfor %}

我使用以下方法渲染它:

class GenerateChart(basewebview):

    def get(self):
        values = {"datepicker":True}
        values["charts"] = {"p3": "3D Pie Chart","p": "Segmented Pied Chart"}
        self.render_page("generatechart.html",values)

class basewebview(webapp.RequestHandler):
    '''''' Base class for all webapp.RequestHandler type classes ''''''
    def render_page(self,filename,template_values=dict()):
        filename = "%s/%s" % (_template_dir,filename)
        path = os.path.join(os.path.dirname(__file__),filename)
        self.response.out.write(template.render(path,template_values))

我们今天的关于Google App Engine python入站邮件LookupError:未知编码谷歌有未知错误阻止了的分享就到这里,谢谢您的阅读,如果想了解更多关于Google App Engine - 从 Python API 启动/停止 Flex 实例 不是由 gcloud 客户端......就像在 Google Web 界面中一样......但通过 Python API、Google App Engine 正式支持 Python 2.7、Google App Engine 正式支持Python 2.7、Google App Engine(python):TemplateSyntaxError:带有五个单词的'for'语句应以'reversed'结尾的相关信息,可以在本站进行搜索。

本文标签: