【问题标题】:app-engine error due to import _multiprocessing由于导入 _multiprocessing 导致的应用程序引擎错误
【发布时间】:2013-03-26 00:05:50
【问题描述】:

我创建了一个应用引擎端点 api,我正在使用 GoogleAppengineLauncher 加载它。该 api 启动正常。但是当我尝试加载 api explorer 进行测试时,由于from multiprocessing import Process 行而出现错误。我的研究引导我to this site。但这对我不起作用。有谁知道如何解决这个问题?

from multiprocessing import Process
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/__init__.py", line 84, in <module>
    import _multiprocessing
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 861, in load_module
    raise ImportError
ImportError
INFO     2013-03-25 23:46:32,229 server.py:528] "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 500 -
INFO     2013-03-25 23:46:32,229 server.py:528] "GET /_ah/api/discovery/v1/apis HTTP/1.1" 500 60

【问题讨论】:

  • 那篇博文来自 2009 年,不再相关。也就是说,您无法导入 _multiprocessing,因为 App Engine 不支持它。你为什么要使用它?
  • @bossylobster 使用value = blob_reader.read() 使用 BlobReader 从 Blobstore 加载图像,但不必阻止。
  • 实际上没有任何方法可以做到这一点,但您可以使用ndb futures 来做一些接近您需要的事情。
  • 谢谢。我仍在尝试看看它是如何工作的。
  • 你应该更新你的问题,说明你为什么需要使用多处理模块。

标签: google-app-engine python-2.7 multiprocessing google-cloud-endpoints


【解决方案1】:

在此group thread 中,一位 Python 2.7 App Engine 运行时工程师指出了应与新的 Python 2.7 threading support 一起使用的替代方案(即 futures 包)。

或者,您可以使用 fetch_data_async 函数从 blob 中读取而不会阻塞。

fetch_data_rpc = blobstore.fetch_data_async(...)
other_processing()
upload_url = fetch_data_rpc.get_result()

【讨论】:

  • 我还没有验证它,但从阅读看来它应该可以解决问题。谢谢。
猜你喜欢
  • 2020-05-07
  • 2021-05-03
  • 2015-05-12
  • 2012-12-12
  • 2017-07-04
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 2012-01-19
相关资源
最近更新 更多