Celery выполняет задачу с партией сообщений

Я хочу отправлять сообщения сельдерею, и когда он достигнет, скажем, 100 сообщений, я хочу, чтобы сельдерей выполнял их в партиях. Это обычный сценарий, если я хочу совершить пакетным путем в базе данных.

Для этой цели во время поиска по сайту я нашел эту ссылку: для того, чтобы делать партии с сельдереем: http://celery.readthedocs.org/en/latest/reference/celery.contrib.batches.html

Моя проблема в том, что в этом примере нет очевидного способа получить данные, представленные в задачу

например, можно сказать, что мы отправляем по одному сообщение:

task.apply_async((message,), link_error=error_handler.s()) 

и затем мы выполним следующую задачу:

 @celery.task(name="process.data", base=Batches, flush_every=100, flush_interval=1) def process_messages(requests): for request in requests: print request /// how I can take the message data submitted in my task for process? 

Есть ли альтернативный способ достижения партий с сельдереем? спасибо

    One Solution collect form web for “Celery выполняет задачу с партией сообщений”

    Для тех, кто найдет это сообщение полезным после многих проб и ошибок, мне удалось извлечь данные из объекта SimplRequest следующим образом:

    Когда вы отправляете свои данные следующим образом:

     func.delay(data) 

    из объекта запроса вы получаете атрибут args, который является списком с данными:

     request.args[0] request.args[1] etc. 

    Если вы отправляете свои данные следующим образом:

     func.apply_async((), {'data': data}, link_error=error_handler.s()) 

    то данные доступны в виде словаря в kwargs:

     request.kwargs['data'] 

    Наконец, как показывает пример, нам нужно сделать цикл во все запросы, чтобы собрать пакет данных

     for r in requests: data = r.kwargs['data'] 

    Было бы неплохо, если бы примеры на странице документации ( здесь ) были обновлены с более простым и понятным примером

    Python - лучший язык программирования в мире.