Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > celery на нескольких серверах


Автор: Lusik 27.4.2014, 03:03
дано - на серваке есть воркер который берет данные из очереди, по ним формирует подзадачи и запускает их группой... для наглядности это что-то типа такого..
Код

...
class QueryAtom(CoreTask):
    def run(self, taskid, core, el):
        res=do_something()
        return res

query_atom = app.tasks[QueryAtom.name]

class Groupper(CoreGroup):
    def run(self, taskid, core, data):
        data=json.loads(data) 
         for el in data:
                header.append(query_atom.s(taskid=taskid,core= core,el= el)) 
         res=group(header).apply_async()
         res.ready()
         total= res.join()
         res.save()
         print total
         return res

...


Всё это счастье замечательно работает, но хотелось бы увеличить количество параллельно запускаемых подтасков, увеличивать concurrency на этом уже некуда -  как бы так сделать чтоб QueryAtom при запуске группы на обоих серверах отрабатывал... понятно что надо одну и ту же очередь слушать, но этого вряд ли достаточно... ничего не могу найти вразумительного по этому вопросу

Разбивать задачи извне на разные серваки и потом дожидаться их окончания всё-таки не хотелось бы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)