2015-01-22 6 views
0

Я работаю на Google App Engine, и в первом сделали что-то вроде этого:параллельные процессы с аргументами

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() 

, но потом поняли, что Google двигатель не поддерживает MultiProcessing модуля ..

так Мне нужен какой-нибудь другой инструмент .. я видел, что для параллельных процессов, я могу использовать POPEN, но все примеры что-то вроде:

Popen(['/bin/sh', '-c', args[0], args[1], ...]) 

, которые идут команды, как если бы он был из оболочка ...

мне нужно создать 2 параллельные процессы, которые выполняются, каждый, свою собственную функцию (цель в моем примере, который получают в качестве аргумента очереди)

Как я могу это сделать?

ответ

1

App Engine имеет свою собственную модель обработки, которая включает в себя собственные очереди (два типа, на самом деле: «push» очереди и «pull»). Используйте очередь push (более простое и более полное управление с помощью внутреннего модуля App Engine) и модулей для обслуживания запросов в этой очереди. В зависимости от вашей рабочей нагрузки вы можете прозрачно заканчивать работу с помощью нескольких серверов. & c (App Engine позаботится об этом масштабировании для вас).

Вы получаете некоторые (автоматическое масштабирование и структурирование), вы теряете некоторые (мелкозернистый контроль над тем, какие процессы работают там). Если компромисс не подходит для вас, App Engine (или другие настройки PaaS) может быть не лучшим для вас - вам может понадобиться более низкий рычаг абстракции, настройка IaaS, например, Google Compute Engine ,