Chcę wysłać wiadomości do selera, a gdy dotrze, powiedzmy 100 wiadomości, chcę, aby seler wykonał je partiami. Jest to typowy scenariusz, jeśli chcę zatwierdzać w partiach do bazy danych.Seler wykonuję zadanie z serią wiadomości
W tym celu podczas googlowania wokół znalazłem ten link: do wykonywania partii z selera: http://celery.readthedocs.org/en/latest/reference/celery.contrib.batches.html
Moim problemem jest to, że w tym przykładzie nie jest oczywistym sposobem, aby uzyskać dane przekazane do zadania
na przykład powiedzmy, że mamy złożyć jeden po drugim kilka wiadomości z:
task.apply_async((message,), link_error=error_handler.s())
i wtedy mamy następujące realizację:
@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?
Czy istnieje alternatywny sposób na uzyskanie partii selera? Dziękuję
FYI 'celery.contrib.batches' zostało usunięte w Celery 4 :-(. Patrz: http://docs.celeryproject.org/en/latest/whatsnew-4.0.html?highlight=batches#features-removed-for-simplicity. – illagrenan