Принимает ли GAE твил вообще? - PullRequest
0 голосов
/ 19 сентября 2010

Я создал свое GAE приложение в каталоге " my_application ". Внутри этого каталога я создал файл .py и назвал его " my_scrypt ".

Содержимое " my_scrypt " в начале было следующим:


print 'Content-Type: text/plain'
print ''
print 'This is my first application'

Затем я запустил его локально на своей машине ( Windows XP ) в установленном браузере ( Mozilla FireFox ) с " GAE Launcher " - все было хорошо - Я мог видеть это предложение (« Это мое первое приложение ») на экране.

Затем я развернул это приложение на GAE (снова с помощью " GAE Launcher ") - все снова было хорошо - я мог видеть то же предложение на экране.

Затем я немного изменил содержимое " my_scrypt ":


from twill.commands import *
config('use_tidy', '0')
go ("http://us.yahoo.com/")
showlinks()

Скачано " twill0.9 " (из здесь ), выбрано и скопировано " twill " оттуда, и вставил его в каталог " my_application ".

Когда я запускал это новое приложение локально (с « GAE Launcher »), все было нормально - я мог видеть список yahoo.com ссылок на экране, но когда я загрузил это приложение на GAE , я получил только сообщение об ошибке.

Почему это так? Я не думаю, что это потому, что версия mechanize , используемая twill , здесь слишком старая - код в " my_script " настолько прост, что любая версия механизировать должны быть в состоянии справиться с этим.

Может ли GAE принимать саржа (как внешний модуль) вообще?

Вы можете просмотреть трассировку стека ошибки в разделе «Обновление 1» справа внизу (↓).


ОБНОВЛЕНИЕ 1:

(Это обновление - мой ответ Нику)

Привет, Ник. Я проверил консоль администратора, поэтому вот трассировка стека:

<type 'exceptions.ImportError'>: No module named fcntl
Traceback (most recent call last):
  File "/base/data/home/apps/silkybutton/1.344911014283513184/bumper.py", line 1, in <module>
    from twill.commands import *
  File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/__init__.py", line 52, in <module>
    from shell import TwillCommandLoop
  File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/shell.py", line 9, in <module>
    from twill import commands, parse, __version__
  File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/commands.py", line 70, in <module>
    from browser import TwillBrowser
  File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/browser.py", line 17, in <module>
    from _browser import PatchedMechanizeBrowser
  File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/_browser.py", line 9, in <module>
    from utils import FixedHTTPBasicAuthHandler, FunctioningHTTPRefreshProcessor
  File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/utils.py", line 12, in <module>
    import subprocess
  File "/base/data/home/apps/silkybutton/1.344911014283513184/twill/other_packages/subprocess.py", line 378, in <module>
    import fcntl

1 Ответ

1 голос
/ 19 сентября 2010

Twill пытается импортировать «подпроцесс». Это модуль Python для порождения потоков, и он недоступен в App Engine. Вам нужно либо проверить, сможете ли вы убедить Twill работать без порождения процессов (возможно, путем изменения кода), либо вам придется использовать mechanize или просто напрямую urlfetch.

...