2013-08-22 1 views
0

Я пытаюсь использовать web.py для запуска простого веб-приложения в Google App Engine, но у вас возникли некоторые довольно простые ошибки. Я искал сайт и ничего не нашел для решения моей проблемы. Вот наброски кода я пытаюсь запустить:Ошибка при использовании web.py в Google App Engine - экземпляр приложения не имеет метода __call__

import web 

urls = (
    "/","Index" 
) 

app = web.application(urls,globals()) 
render = web.template.render('pages/', base="layout") 

class Index: 
    def GET(self): 
     #code... 

if __name__ == "__main__": 
    app.cgirun() 

и это код app.yaml:

application: #appname 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: home.app 
- url: /static 
    static_dir: static 

Но затем я получаю это в журнале:

2013-08-22 06:11:13 Running command: "['C:\\Python27\\pythonw.exe', 'C:\\Program  Files\\Google\\google_appengine\\dev_appserver.py', '--skip_sdk_update_check=yes', '--port=8080', '--admin_port=8000', 'C:\\.....\\root\\home-gae']" 
INFO  2013-08-22 06:11:16,956 devappserver2.py:557] Skipping SDK update check. 
WARNING 2013-08-22 06:11:16,976 api_server.py:317] Could not initialize images API; you are likely missing the Python "PIL" module. 
INFO  2013-08-22 06:11:17,006 api_server.py:138] Starting API server at: http://localhost:64510 
INFO  2013-08-22 06:11:17,013 dispatcher.py:164] Starting module "default" running at: http://localhost:8080 
INFO  2013-08-22 06:11:17,019 admin_server.py:117] Starting admin server at: http://localhost:8000 
ERROR 2013-08-22 10:11:24,303 wsgi.py:235] 

Traceback (most recent call last): 

    File "C:\Program Files\Google\google_appengine\google\appengine\runtime\wsgi.py", line 223, in Handle 

    result = handler(dict(self._environ), self._StartResponse) 

AttributeError: application instance has no __call__ method 

INFO  2013-08-22 06:11:24,313 module.py:593] default: "GET/HTTP/1.1" 500 - 

AttributeError меня сбивает с толку, потому что, похоже, метод вызова в веб-модуле/приложении. Есть идеи? Любые мысли были бы оценены.

ответ

0

Во-первых, есть небольшая проблема с вашим app.yaml. Вы должны поместить статический обработчик перед броской всех обработчиком:

handlers: 
- url: /static 
    static_dir: static 
- url: /.* 
    script: home.app 

В противном случае, вы не будете иметь возможность обслуживать статические файлы.

Чтобы устранить проблему на веб-сайте, не загружаемом, похоже, что сервер разработки пытается обработать ваше приложение CGI в качестве приложения WSGI. Попробуйте установить файл home.py на номер the official example for web.py on GAE. То есть, избавиться от if __name__ == "__main__:" части и просто заменить его:

app = app.gaerun() 
1

я нашел способ работы его.

import web 

urls = (
    "/.*", "hello" 
) 

application = web.application(urls, globals()) 
#app = web.application(urls, globals()) 

class hello: 
    def GET(self): 
     return "HelloWorld" 

#app = app.gaerun() 
#app.cgirun() 
app = application.wsgifunc() 

используя "app = application.wsgifunc()", тогда код будет работать хорошо.

 Смежные вопросы

  • Нет связанных вопросов^_^