【问题标题】:Syntax error after uploading GAE Python app上传 GAE Python 应用程序后出现语法错误
【发布时间】:2011-01-17 05:11:47
【问题描述】:

我创建了一个使用 cElementTree 解析 RSS 提要的 GAE 应用程序。在我本地安装的 GAE 上进行测试可以正常工作。当我上传此应用并尝试对其进行测试时,我收到了 SyntaxError。

错误是:

Traceback (most recent call last):   File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 509, in __call__
handler.post(*groups)   File "/base/data/home/apps/palmfeedparser/1-6.339910418736930444/pipes.py", line 285, in post
tree = ET.parse(urlopen(URL))   File "<string>", line 45, in parse   File "<string>", line 32,
in parse SyntaxError: no element found: line 14039, column 45

我按照 Alex Martelli 先生的建议做了,它在我的本地机器上打印了以下内容:

[
    '      <ac:tag><![CDATA[Mobilit\xc3\xa4t]]></ac:tag>\n', 
    '     </ac:tags>\n', 
    '     <ac:images>\n', 
    '      <ac:image ac:number="1">\n', 
    '       <ac:asset_url ac:type="app">http://cdn.downloads.example.com/public/1198/de/images/1/A/01.png</ac:asset_url>\n'
]

我上传了应用程序并打印出来:

[
    '      <ac:tag><![CDATA[Mobilit\xc3\xa4t]]></ac:tag>\n', 
    '     </ac:tags>\n', 
    '     <ac:images>\n', 
    '      <ac:image ac:number="1">\n', 
    '       <ac:asset_url ac:type="app">http://cdn.downloads.example.com/public/1198/de/images/1/A/01.png</ac:asset_url>\n'
]

这些行对应于我正在阅读的 RSS 提要中的以下行:

<ac:tags>
  <ac:tag><![CDATA[Mobilität]]></ac:tag>

 </ac:tags>
 <ac:images>
  <ac:image ac:number="1">
   <ac:asset_url ac:type="app">http://cdn.downloads.example.com/public/1198/de/images/1/A/01.png</ac:asset_url>

我注意到在结束 ac:tags 之前有一个换行符。第 14039 行对应于这个新行。

更新:

我使用 urllib.urlopen 访问提要的 URL。我显示了它在本地和 GAE 上获取的内容。在本地,没有内容被截断。上传应用后测试,15289行的feed被截断为14185行。

我可以使用什么方法来获取这个巨大的提要? urlfetch 会起作用吗?

提前感谢您的帮助!

A_iyer

【问题讨论】:

  • 14039 行的内容可能会被超时效应截断。要调试,而不是直接调用ET.parse,将这些行绑定到名称xx=urlopen(URL).readlines(),然后使用例如logging.info 显示 repr(xx[14037:14042]) - 围绕您所看到的问题的一段内容。与您本地安装的 GAE SDK 相比,它在 GAE 上显示了什么?告诉我们(通过编辑此 Q),我们或许可以提供帮助。
  • 感谢您的快速回复!正如你所提到的,我已经编辑了回复。

标签: python rss feed


【解决方案1】:

您可能遇到了对 GAE 施加的神秘限制之一。

Urlopen 已被 google 覆盖为它的 urlfetch 方法,因此它应该没有任何区别。 (虽然可能值得一试,但 GAE 中有很多隐藏的东西)

换行符不应影响 cElementTree。

您的 AppEngine 日志中是否还有其他日志消息? (和urlopen请求有关?)

【讨论】:

  • 感谢您的回复保罗!我试过 urlfetch ,正如你所说的,没有区别。换行符不影响 cElementTree。提要用导致错误的尾随 ' 字符截断。 GAE 不显示除 syntaxError 之外的任何日志记录消息。有没有办法防止 GAE 中的截断?
猜你喜欢
  • 2017-02-18
  • 2017-08-22
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2018-08-16
  • 1970-01-01
相关资源
最近更新 更多