【问题标题】:Can we run multiprocessing Pool in GAE?我们可以在 GAE 中运行多处理池吗?
【发布时间】:2011-06-30 07:31:29
【问题描述】:

是否可以在 gae 中运行多处理池?

如果是,为什么我的代码在我的本地机器上运行良好,但使用 django 远程 api 弹出以下错误消息:

File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/multiprocessing/pool.py", line 148, in map
    return self.map_async(func, iterable, chunksize).get()   
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/multiprocessing/pool.py", line 422, in get
    raise self._value TypeError: __init__() keywords must be strings

【问题讨论】:

  • 开发 SDK 环境甚至不会弱弱地尝试确保您的本地计算机将只运行在 Google 的 App Engine 服务器上运行的东西。因此,如果某些在本地工作的花哨的东西在部署到 Google App Engine 时不起作用,这绝不应该是一个大惊喜,尤其是在任何 SDK 文档中都没有提到它的使用时。如果您需要在 App Engine 上做“后台工作”,您可能对任务队列感兴趣:code.google.com/appengine/docs/python/taskqueue
  • @Sasha 是的。多处理在 dev_appserver 中起作用的唯一原因是因为它是 2.5 中引入的功能,并且 OP 运行的是 2.6。

标签: python django google-app-engine multiprocessing


【解决方案1】:

您将无法在生产服务器上运行多处理,但如果您使用的是 remote_api,那么您可以在本地运行您的脚本(使用多处理)并让每个池进程使用通过 remote_api 调用与生产服务器通信.

如果您实际上需要在服务器端代码中使用 multiprocess 样式的操作,那么 Mapper API 非常适合此任务。

【讨论】:

  • 或者更有可能是任务队列 API。
最近更新 更多