Синтаксическая ошибка после загрузки приложения GAE Python - PullRequest
1 голос
/ 16 февраля 2010

Я создал приложение GAE, которое анализирует RSS-каналы с помощью cElementTree. Тестирование на моей локальной установке 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

Я сделал то, что предложил мистер Алекс Мартелли, и на моем локальном компьютере было напечатано:

[
    '      <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 строк, усекается до 14185 строк.

Какой метод я могу использовать, чтобы получить этот огромный канал? Будет ли работать urlfetch?

Заранее спасибо за помощь!

A_iyer

1 Ответ

0 голосов
/ 18 февраля 2010

Возможно, вы столкнулись с одним из таинственных ограничений, установленных для GAE.

Urlopen был переопределен Google для его метода urlfetch, поэтому в нем не должно быть разницы. (хотя, возможно, стоит попробовать, в GAE есть много скрытых вещей)

символы новой строки не должны влиять на cElementTree.

Есть ли в ваших журналах AppEngine какие-либо другие сообщения журнала? (Относительно запроса urlopen?)

...