Dalam pembangunan perisian moden, mencipta aliran kerja teguh yang menyambungkan API daripada pelbagai perkhidmatan dan mengendalikan kedua-dua peristiwa segerak dan tak segerak adalah cabaran biasa. Pendekatan konvensional melibatkan penggunaan gabungan baris gilir, perkhidmatan mikro dan sistem pengurusan negeri untuk membina aplikasi berskala. Walaupun berkesan, seni bina ini disertakan dengan overhed yang ketara: menyediakan dan menyelenggara infrastruktur seperti baris gilir mesej, menjalankan pelayan atau fungsi lambda, mengurus keadaan dalam pangkalan data dan melaksanakan mekanisme pengendalian ralat yang kompleks.
Bagaimana jika terdapat cara yang lebih mudah, lebih dipercayai untuk mengendalikan aliran kerja yang berjalan lama tanpa perlu bersusah payah mengurus semua infrastruktur ini? Itulah matlamat Durable Python, untuk mencubanya, daftar ke Beta.
Bayangkan anda ingin memantau permintaan tarik (PR) dalam GitHub. Setiap kali PR baharu dibuka, anda ingin membuat saluran Slack khusus untuk perbincangan dan menghantar peringatan harian sehingga PR ditutup atau digabungkan. Ini kedengaran mudah, jadi anda mungkin fikir anda boleh menyelesaikannya dengan fungsi Python asas (ini ialah fungsi Python asas yang dihasilkan oleh ChatGPT):
@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'})
Coretan kod ini nampaknya mengendalikan tugas, tetapi ia hanya sesuai untuk senario "aliran gembira". Dalam aplikasi dunia sebenar, pendekatan naif ini kurang. Gelung sementara bergantung pada masa operasi pelayan berterusan, yang tidak dijamin. Proses boleh ranap, pelayan boleh dimulakan semula dan tiba-tiba, aliran kerja anda rosak.
Pendekatan yang lebih dipercayai melibatkan membina aplikasi berasaskan peristiwa. Di sini, anda akan menggunakan baris gilir untuk mendengar acara GitHub, tugas cron untuk menghantar peringatan, pangkalan data untuk menyimpan keadaan PR dan saluran, dan fungsi untuk mengendalikan acara ini. Biasanya, persediaan ini berjalan pada infrastruktur awan, memanfaatkan perkhidmatan seperti AWS Lambda untuk penempatan dan pelaksanaan.
Walaupun kaedah ini boleh dilaksanakan dan teguh, kaedah ini juga memerlukan persediaan, penyelenggaraan dan kepakaran yang banyak. Menguruskan infrastruktur, memastikan masa beroperasi dan menangani keadaan ralat memerlukan sumber yang besar dan pasukan yang mahir.
Bagaimana jika anda boleh menggabungkan kesederhanaan kod Python naif dengan kebolehpercayaan reka bentuk tak segerak? Bagaimana jika Python boleh menjamin bahawa walaupun proses ranap atau pelayan dimulakan semula, proses itu akan diteruskan di tempat ia berhenti?
AutoKitteh menangani cabaran ini dengan tepat dengan Durable Python. Menggunakan Python Tahan Lama, pengguna menulis kod Python sementara sistem memastikan bahawa jika proses dimulakan semula, ia terus berjalan dari titik yang sama. Walaupun terdapat had (cth., masa henti yang lama mungkin tidak sesuai), untuk kebanyakan kes penggunaan, penyelesaian ini berfungsi dengan sempurna.
Durable-Python menjimatkan anda daripada mengurus keadaan secara manual, membolehkan anda menulis aliran kerja anda sebagai aliran berterusan dan bukannya mesin keadaan dipacu peristiwa, yang boleh mencabar untuk dibina dan nyahpepijat. AutoKitteh, sebagai infrastruktur, mempunyai baris gilir terbina dalam dan penyepaduan dengan aplikasi luaran dan API, menjadikannya mudah untuk membangunkan aliran kerja yang mantap dalam Python dengan cepat.
Tiada sihir yang terlibat—hanya kejuruteraan yang kukuh. AutoKitteh dikuasakan oleh Temporal, rangka kerja untuk membina aliran kerja yang tahan lama. Temporal memerlukan cara pengekodan khusus, termasuk pemahaman tentang determinisme, idempotensi dan konsep lain untuk memastikan kebolehpercayaan. AutoKitteh mengabstrak kerumitan ini, membenarkan pembangun menulis kod Python standard. Di bawah tudung, sebarang fungsi dengan kesan sampingan ditukar menjadi aktiviti Temporal. Sebagai pembangun, anda tidak perlu risau tentang butiran ini—hanya fokus pada menulis logik perniagaan.
Untuk butiran lanjut teknikal, rujuk dokumentasi AutoKitteh.
Sudah tentu, setiap abstraksi ada harganya. Di bawah hud, Durable Python merekodkan aliran aliran kerja untuk membolehkan pemulihan selepas kegagalan, yang memerlukan beberapa kos penyimpanan dan prestasi.
Durable Python direka untuk penyusunan API dan bukannya membina aplikasi data. Jika anda memerlukan aplikasi berprestasi tinggi, anda harus mempertimbangkan untuk membina penyelesaian tersuai. Walau bagaimanapun, jika anda ingin membangunkan aliran kerja yang boleh dipercayai dengan cepat dengan pembangunan dan pelaburan infrastruktur yang minimum, Durable Python mungkin merupakan pilihan yang baik.
Durable Python boleh digunakan pada pelbagai aliran kerja, terutamanya dalam domain yang kebolehpercayaan adalah penting, seperti:
Contoh worflows boleh didapati di sini.
Konsep Python tahan lama, dilaksanakan dikuasakan oleh AutoKitteh, memperkasakan pembangun untuk membina, menggunakan dan mengurus automasi aliran kerja yang boleh dipercayai dengan kod minimum. Pelaksanaan yang tahan lama dan pemulihan yang lancar dikendalikan di belakang tabir, jadi anda boleh fokus pada perkara yang benar-benar penting—logik perniagaan anda.
Walaupun terdapat banyak alat yang sangat baik untuk mencapai ketahanan (seperti Temporal dan Restate), Durable-Python menyediakan cara yang cepat, mudah dan kos efektif untuk mencapai hasil yang sama.
Atas ialah kandungan terperinci Ular Tahan Lama: Membina Aliran Kerja Tahan Lama Kalis Peluru, Dipermudahkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!