In der modernen Softwareentwicklung ist die Erstellung robuster Workflows, die APIs verschiedener Dienste verbinden und sowohl synchrone als auch asynchrone Ereignisse verarbeiten, eine häufige Herausforderung. Der herkömmliche Ansatz beinhaltet die Verwendung einer Mischung aus Warteschlangen, Mikrodiensten und Zustandsverwaltungssystemen, um skalierbare Anwendungen zu erstellen. Diese Architektur ist zwar effektiv, bringt jedoch einen erheblichen Mehraufwand mit sich: Einrichten und Warten von Infrastruktur wie Nachrichtenwarteschlangen, Ausführen von Servern oder Lambda-Funktionen, Verwalten des Status in Datenbanken und Implementieren komplexer Fehlerbehandlungsmechanismen.
Was wäre, wenn es eine einfachere und zuverlässigere Möglichkeit gäbe, lang andauernde Arbeitsabläufe zu bewältigen, ohne sich um die Verwaltung dieser gesamten Infrastruktur kümmern zu müssen? Das ist das Ziel von Durable Python. Um es auszuprobieren, registrieren Sie sich für die Beta.
Stellen Sie sich vor, Sie möchten Pull Requests (PRs) in GitHub überwachen. Jedes Mal, wenn ein neuer PR geöffnet wird, möchten Sie einen speziellen Slack-Kanal für Diskussionen erstellen und tägliche Erinnerungen senden, bis der PR geschlossen oder zusammengeführt wird. Das hört sich einfach an, also denken Sie vielleicht, dass Sie es mit einer einfachen Python-Funktion lösen können (hier ist eine einfache Python-Funktion, die von ChatGPT generiert wurde):
@app.route('/webhook', methods=['POST']) def github_webhook(): data = request.json if 'pull_request' in data and data['action'] == 'opened': pr_number = data['pull_request']['number'] pr_url = data['pull_request']['html_url'] # Create a new Slack channel for the PR channel_id = create_slack_channel(pr_number) send_slack_notification(channel_id, pr_number, pr_url) # Periodically check the PR status and send reminders until it's closed or merged while True: time.sleep(3600) # Wait for 1 hour before checking the status again pr_status = check_pr_status(pr_number) if pr_status == 'open': send_slack_notification(channel_id, pr_number, pr_url) else: break return jsonify({'status': 'ok'})
Dieses Code-Snippet scheint die Aufgabe zu bewältigen, ist aber nur für das „Happy Flow“-Szenario geeignet. In realen Anwendungen reicht dieser naive Ansatz nicht aus. Die while-Schleife basiert auf einer kontinuierlichen Serververfügbarkeit, die nicht garantiert werden kann. Prozesse können abstürzen, Server können neu gestartet werden und plötzlich ist Ihr Arbeitsablauf unterbrochen.
Ein zuverlässigerer Ansatz besteht darin, eine ereignisgesteuerte Anwendung zu erstellen. Hier würden Sie Warteschlangen verwenden, um auf GitHub-Ereignisse zu warten, Cron-Jobs, um Erinnerungen zu senden, Datenbanken, um den PR- und Kanalstatus zu speichern, und Funktionen, um diese Ereignisse zu verarbeiten. Normalerweise läuft dieses Setup auf einer Cloud-Infrastruktur und nutzt Dienste wie AWS Lambda für die Bereitstellung und Ausführung.
Obwohl diese Methode machbar und robust ist, erfordert sie auch erhebliche Einrichtungs-, Wartungs- und Fachkenntnisse. Die Verwaltung der Infrastruktur, die Sicherstellung der Betriebszeit und der Umgang mit Fehlerzuständen erfordern erhebliche Ressourcen und ein kompetentes Team.
Was wäre, wenn Sie die Einfachheit des naiven Python-Codes mit der Zuverlässigkeit eines asynchronen Designs kombinieren könnten? Was wäre, wenn Python garantieren könnte, dass ein Prozess, selbst wenn er abstürzt oder der Server neu startet, genau dort weitermacht, wo er aufgehört hat?
AutoKitteh geht mit Durable Python genau diese Herausforderung an. Mithilfe von Durable Python schreibt der Benutzer Python-Code, während das System sicherstellt, dass ein Prozess bei einem Neustart an derselben Stelle weiterläuft. Obwohl es Einschränkungen gibt (z. B. ist eine lange Ausfallzeit möglicherweise nicht ideal), funktioniert diese Lösung für die meisten Anwendungsfälle perfekt.
Durable-Python erspart Ihnen die manuelle Statusverwaltung und ermöglicht Ihnen, Ihren Workflow als kontinuierlichen Fluss zu schreiben und nicht als ereignisgesteuerte Zustandsmaschine, deren Erstellung und Fehlerbehebung schwierig sein kann. AutoKitteh verfügt als Infrastruktur über integrierte Warteschlangen und Integrationen mit externen Anwendungen und APIs, was die schnelle Entwicklung robuster Arbeitsabläufe in Python erleichtert.
Es ist keine Zauberei im Spiel – nur solide Technik. AutoKitteh basiert auf Temporal, einem Framework zum Aufbau dauerhafter Arbeitsabläufe. Temporal erfordert eine bestimmte Art der Codierung, einschließlich eines Verständnisses von Determinismus, Idempotenz und anderen Konzepten, um Zuverlässigkeit sicherzustellen. AutoKitteh abstrahiert diese Komplexität und ermöglicht Entwicklern das Schreiben von Standard-Python-Code. Unter der Haube wird jede Funktion mit Nebenwirkungen in eine zeitliche Aktivität umgewandelt. Als Entwickler müssen Sie sich um diese Details keine Gedanken machen – konzentrieren Sie sich einfach auf das Schreiben der Geschäftslogik.
Weitere technische Details finden Sie in der AutoKitteh-Dokumentation.
Natürlich hat jede Abstraktion einen Preis. Unter der Haube zeichnet Durable Python den Ablauf des Workflows auf, um die Wiederherstellung nach einem Fehler zu ermöglichen, der einige Speicher- und Leistungskosten verursacht.
Durable Python ist eher für die Orchestrierung von APIs als für die Erstellung von Datenanwendungen konzipiert. Wenn Sie Hochleistungsanwendungen benötigen, sollten Sie den Aufbau einer maßgeschneiderten Lösung in Betracht ziehen. Wenn Sie jedoch schnell zuverlässige Arbeitsabläufe mit minimalen Entwicklungs- und Infrastrukturinvestitionen entwickeln möchten, könnte Durable Python eine gute Option sein.
Durable Python kann auf eine Vielzahl von Arbeitsabläufen angewendet werden, insbesondere in Bereichen, in denen Zuverlässigkeit von entscheidender Bedeutung ist, wie zum Beispiel:
Beispiele zu Worflows finden Sie hier.
Das langlebige Python-Konzept, das von AutoKitteh implementiert wird, ermöglicht Entwicklern die Erstellung, Bereitstellung und Verwaltung zuverlässiger Workflow-Automatisierung mit minimalem Code. Die dauerhafte Ausführung und die nahtlose Wiederherstellung erfolgen hinter den Kulissen, sodass Sie sich auf das Wesentliche konzentrieren können – Ihre Geschäftslogik.
Während es viele hervorragende Tools zum Erreichen von Dauerhaftigkeit gibt (wie Temporal und Restate), bietet Durable-Python eine schnelle, einfache und kostengünstige Möglichkeit, die gleichen Ergebnisse zu erzielen.
Das obige ist der detaillierte Inhalt vonLanglebiges Python: Erstellen kugelsicherer, lang laufender Arbeitsabläufe, einfach gemacht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!