Как перенести приложение app.yaml на 2.7?

Я переношу приложение gae на python 2.7. Это мой новый app.yaml:

application: webfaze
version: main
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /mapreduce(/.*)?
  script: mapreduce/main.application

- url: /(.*\.(html|css|js|gif|jpg|png|ico|swf))
  static_files: static/\1
  upload: static/.*
  expiration: "1d"

- url: .*
  script: main.application

- url: /task/.*
  script: main.application
  login: admin

Но я получаю это сообщение об ошибке:

Error parsing yaml file:
Invalid object:
threadsafe cannot be enabled with CGI handler: mapreduce/main.application
  in "webfaze/app.yaml", line 22, column 1

Можете ли вы рассказать мне, как разрешить ошибку?

Ответ 1

Проверяя исходный код, вам кажется, что вам нужно определить путь ваших обработчиков без косой черты:

   if (handler.script and (handler.script.endswith('.py') or 
       '/' in handler.script)):
       raise appinfo_errors.ThreadsafeWithCgiHandler(
                    'threadsafe cannot be enabled with CGI handler: %s' %
                    handler.script)

Переместите application.py в корень вашего проекта и соответствующим образом измените путь обработчика.

Ответ 2

Изменить:

- url: /mapreduce(/.*)?
  script: mapreduce/main.application

Кому:

- url: /mapreduce(/.*)?
  script: mapreduce.main.application

Вам также может потребоваться добавить __ init __. py в папку 'mapreduce', если она там уже не существует. Это заставит python интерпретировать папку как модуль.