我創建了一個GAE應用程序,它使用cElementTree解析RSS提要。在本地安裝的GAE上測試工作正常。當我上傳這個應用程序並試圖測試它時,我得到一個SyntaxError。上傳GAE後出現語法錯誤Python應用程序
的錯誤是:
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
我做了什麼Mr.Alex馬爾泰利建議,並將其打印出來我的本地機器上執行以下操作:
[
' <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:標記之前有一個換行符。 14039行對應於這一新行。
更新:
我用了urllib.urlopen訪問飼料的URL。我顯示了它在本地和GAE上獲取的內容。在本地,沒有內容被截斷。上傳應用程序後進行測試,顯示包含15289行的Feed被截斷爲14185行。
我可以用什麼方法獲取這個巨大的Feed? urlfetch會工作嗎?
在此先感謝您的幫助!
A_iyer
14039行內容可能會被超時效果截斷。要進行調試,不要直接調用'ET.parse',而是將這些行綁定到一個名稱,'xx = urlopen(URL).readlines()',然後使用例如。 'logging.info'顯示'repr(xx [14037:14042])' - 你看到的問題的一部分內容。它在GAE正確與本地安裝GAE SDK上顯示的內容是什麼?告訴我們(通過編輯這個問題),我們可能會提供幫助。 – 2010-02-16 00:57:31
感謝您的快速響應!我已經編輯了你所提到的答覆。 – 2010-02-16 02:50:13