我正在使用谷歌应用引擎,并且最初做了类似的事情:
queue = multiprocessing.Queue()
cs = multiprocessing.Process(name='control_service', target=control_service_func, args=(queue,))
cs.daemon = True
m = multiprocessing.Process(name='machine', target=machine_func, args=(queue,))
m.daemon = True
cs.start()
m.start()
但后来意识到谷歌引擎不支持多处理模块..
所以我需要一些其他工具.. 我看到对于并行进程,我可以使用Popen,但所有示例都是这样的:
Popen(['/bin/sh', '-c', args[0], args[1], ...])
运行命令,好像它来自shell ...
我需要创建两个并行进程,每个进程运行,每个进程都有自己的函数(我的示例中的目标,它将队列作为参数)
我该怎么做?
答案 0 :(得分:1)
App Engine有自己的处理模型 - 包括自己的队列(两种,实际上是:“推”队列,以及“拉”队列)。使用推送队列(更简单,并由App Engine后端更全面地管理)和模块来提供该队列上的请求 - 并且根据您的工作负载,您可能会透明地使用多个服务器& c(App Engine将为您处理这种扩展)。
你获得了一些(自动扩展和结构化),你失去了一些(对哪些进程在哪里运行的细粒度控制)。如果权衡不适合您,App Engine(或其他PaaS设置)可能不是最适合您的 - 您可能需要较低的抽象杠杆,IaaS设置,例如Google的 Compute < / strong>引擎改为。