0

web.py を使用して Google App Engine で単純な Web アプリケーションを実行しようとしましたが、かなり基本的なエラーが発生しました。サイトを検索しましたが、問題に対処するものは見つかりませんでした。実行しようとしているコードの概要は次のとおりです。

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 -

Web/アプリケーションモジュールに呼び出しメソッドがあるように見えるため、AttributeError は私を混乱させます。何か案は?任意の考えをいただければ幸いです。

4

2 に答える 2

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()」を使用すると、コードはうまく機能します。

于 2014-01-22T02:02:39.137 に答える