Verbesserter Bestelllisten- und Rechnungsversand
Ein Schwank aus dem Programmier-Alltag.
Der wöchentliche Bestelllisten-Versand ist ein kritischer Task, das heißt: er muss funktionieren. Die Hersteller rechnen fix damit, dass sie die Bestelllisten am Mittwoch früh in ihrem Posteingang finden. Dementsprechend viel Zeit floss bzw. fließt in die Umsetzung, ich als Support für viele Initiativen, die bei mir hosten, möchte ja am Mittwoch früh bitte meine Ruhe haben 😉
99,25% – 99,50% sind eben zu wenig…
Ich betreue und hoste momentan 25 Initiativen mit jeweils im Durchschnitt 15 Herstellern, das macht knapp 400 Listen, die jede Woche versendet werden. Soweit, so gut. Aber ab und zu (bei 2 bis 3 Herstellern) klappte das Versenden nicht, weil ein Fehler auftritt, der auch nach oftmaligem Debuggen einfach nicht einzugrenzen und zu finden war. Noch seltener (ist aber auch ein paar Mal vorgekommen) ist dann das ganze Skript abgebrochen und die Listen an die Hersteller, die noch keine Mail erhalten haben, wurden gar nicht versendet. Ziemlich nervig für alle beteiligten. 📞📞📞
Die Lösung
Ich habe mich also vor ca. einem Monat dazu entschieden, das ganze Versende-System (das technisch auch für den Rechnungsversand verantwortlich ist) komplett neu zu programmieren. Mittels einer Queue ist nun die Generierung der PDFs und das Versenden der Mails technisch getrennt. Außerdem werden jetzt die Mails einzeln versendet und bei einem Fehler automatisch bis zu 2x wiederholt. Das reicht, um ein Nicht-Versenden wegen kurzer Ausfälle des Mailservers zu vermeiden. Sollte die Liste dann immer noch nicht versendet worden sein (wenn z.B. die Mailbox des Herstellers voll ist), bleibt das Symbol in den Aktivitäten auf rot (siehe Kreis im Screenshot).
Und siehe da: Alles funktioniert jetzt einwandfrei 🤗
PS: Alle Initiativen, die ich betreue, verwenden die neue Funktion bereits. Alle anderen klonen entweder sofort direkt von Github (develop-Branch) und installieren sich die Vendors selbst oder warten auf die Version 3.2, die im Frühjahr 2021 erscheinen wird.