22

Python 2.5 から Python 2.7 に移行しようとしましたが、毎回同じエラーが発生します。

Python 2.5 で app.yaml ファイルと 1 つのスクリプト main.py のみを使用して非常に簡単なテストを行い、正常に動作しました。スクリプトは、すべてが正常に機能することを確認するための単なる Hello World タイプです。

app.yaml

application: sparepartsfinder
version: 1
runtime: python
api_version: 1


handlers:

- url: /blog
  script: main.py

- url: /blog/new_entry
  script: main.py 

main.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/blog', MainPage),
                                      ('/blog/new_entry',MainPage),
                                      ('/blog/archive/.*',MainPage)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Python 2.7 に変更するときは、Google App Engineのドキュメントに従って、app.yaml スクリプトと main.py スクリプトの両方を変更します。

app.yaml

application: sparepartsfinder
version: 1
runtime: python27
api_version: 1
threadsafe: true


handlers:

- url: /blog
  script: main.py

- url: /blog/new_entry
  script: main.py 

- url: /blog/archive/.*
  script: main.py


- url: .*
  script: main.py

main.py

import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.out.write('Hello prueba!')

app = webapp2.WSGIApplication([('/', MainPage),
                               ('/blog', MainPage),
                               ('/blog/new_entry',MainPage),
                               ('/blog/archive/.*',MainPage)],
                              debug=True)

残念ながら、ローカルでも、新しい構成を Google App Engine にアップロードしようとしても機能しません。(私はいつも同じ間違いをします)。

Windows XP のマシン (Python 2.5 と 2.7 の両方を使用) の問題は理解できるかもしれませんが、アップロード時には理解できません。

これはエラーです:

2012-05-04 13:02:07 実行中のコマンド: "[u'C:\Python25\python2.5.exe', '-u', 'C:\Archivos >de programa\Google\google_appengine\appcfg.py ', '--no_cookies', u'--email=salvador.sanjuan@gmail.com', '--passin', 'update', 'C:\Documents and Settings\SSanjuan\Mis documentos\Dropbox\Dropbox\ Python\SpareParts']" yaml ファイルの解析エラー: 無効なオブジェクト: CGI ハンドラーでスレッドセーフを有効にできません: "C:\Documents and Settings\SSanjuan\Mis documentos\Dropbox\Dropbox\Python\SpareParts\app.yaml の main.py "、27 行目、1 列目 2012-05-04 13:02:31 (プロセスはコード 1 で終了しました)

4

2 に答える 2

30

app.yamlmain.applicationの代わりに使用します。に設定するmain.pyには、前者が必要です。threadsafetrue

于 2012-05-04T11:35:47.350 に答える
17

私は同じ問題を抱えていましたが、ここに答えがあります。

Python 2.5 ランタイムの場合、ファイルへのパスを指定します。つまり、スクリプト: myfolder/myfile.py です。

Python 2.7 ランタイムの場合、オブジェクトを指定しています。したがって、myfile.py に適切な WSGI オブジェクト 'app' が含まれていると仮定すると、それはスクリプト myfolder.myfile.app として指定されます。

于 2012-11-25T18:45:05.493 に答える