2.7转换后Mapreduce不再有效

leo*_*ntx 1 google-app-engine multithreading mapreduce python-2.7

将我们的应用程序转换为Python 2.7,配置多线程,并在app.yaml中引用mapreduce,就像这样......

- url: /mapreduce(/.*)?
  script: mapreduce.main.app
  #script: google.appengine.ext.mapreduce.main.app
  login: admin
Run Code Online (Sandbox Code Playgroud)

并像这样调用mapreduce ...

  control.start_map(
      "FNFR",
      "fnfr.fnfrHandler",
      "mapreduce.input_readers.BlobstoreLineInputReader",
      {"blob_keys": blobKey},
      shard_count=32,
      mapreduce_parameters={'done_callback': '/fnfrdone','blobKey': blobKey, 'userID':thisUserID})
Run Code Online (Sandbox Code Playgroud)

我们得到以下堆栈跟踪...

Traceback (most recent call last):
  File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 189, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 241, in _LoadHandler
    raise ImportError('%s has no attribute %s' % (handler, name))
ImportError: <module 'mapreduce.main' from '/base/data/home/apps/s~xxxxxxonline/2.361692533819432574/mapreduce/main.pyc'> has no attribute app 
Run Code Online (Sandbox Code Playgroud)

我发现了一个SO参考(如何将我的app.yaml迁移到2.7?)但是从我的yaml可以看出,我想我已经尝试了所有组合来尝试解决它.谢谢.

dra*_*onx 5

这对我有用,但我仍然使用相当旧版本的SDK,我不知道他们是否解决了这个问题:

- url: /mapreduce(/.*)?
  script: mapreduce.main.APP
  login: admin
Run Code Online (Sandbox Code Playgroud)