Python - Wiederholen Sie eine fehlgeschlagene Sellerie-Aufgabe aus einer anderen Warteschlange

Ich poste Daten zu einem Webdienst in Celery. Manchmal werden die Daten nicht an den Webdienst gesendet, weil das Internet nicht verfügbar ist, und die Aufgabe wird unendlich oft wiederholt, bis sie gesendet wird. Der erneute Versuch der Aufgabe ist nicht erforderlich, da das Netz ausgefallen ist und es daher nicht erforderlich ist, es erneut zu versuchen.

Ich dachte an eine bessere Lösung, dh wenn eine Aufgabe dreimal fehlschlägt (mindestens dreimal), wird sie in eine andere Warteschlange verschoben. Diese Warteschlange enthält eine Liste aller fehlgeschlagenen Aufgaben. Wenn nun das Internet verfügbar ist und die Daten über das Internet gesendet werden, dh die Aufgabe aus der normalen Warteschlange erledigt wurde, beginnt die Verarbeitung der Aufgaben aus der Warteschlange, in der die Aufgaben fehlgeschlagen sind. Dies verschwendet nicht den CPU-Speicher, wenn Sie die Aufgabe immer wieder wiederholen.

Hier ist mein Code: - Ab sofort versuche ich die Aufgabe nur noch einmal. Aber ich bezweifle, dass dies der richtige Weg ist.

@shared_task(default_retry_delay = 1 * 60, max_retries = 10)
def post_data_to_web_service(data,url):

    try : 
        client = SoapClient(
                            location = url,
                            action = 'http://tempuri.org/IService_1_0/',
                            namespace = "http://tempuri.org/", 
                            soap_ns='soap', ns = False
                            )

        response= client.UpdateShipment(
                                        Weight = Decimal(data['Weight']), 
                                        Length = Decimal(data['Length']), 
                                        Height = Decimal(data['Height']), 
                                        Width =  Decimal(data['Width']) , 
                                        )

    except Exception, exc:
        raise post_data_to_web_service.retry(exc=exc) 

Wie kann ich zwei Warteschlangen gleichzeitig verwalten und versuchen, Aufgaben aus beiden Warteschlangen auszuführen?

Einstellungen.py

BROKER_URL = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

Antworten auf die Frage(1)

Ihre Antwort auf die Frage