في تطوير البرمجيات الحديثة، يعد إنشاء مسارات عمل قوية تربط واجهات برمجة التطبيقات من الخدمات المختلفة وتتعامل مع الأحداث المتزامنة وغير المتزامنة تحديًا شائعًا. يتضمن النهج التقليدي استخدام مزيج من قوائم الانتظار والخدمات الصغيرة وأنظمة إدارة الحالة لإنشاء تطبيقات قابلة للتطوير. على الرغم من فعاليتها، إلا أن هذه البنية تأتي مع نفقات عامة كبيرة: إعداد وصيانة البنية التحتية مثل قوائم انتظار الرسائل، وتشغيل الخوادم أو وظائف لامدا، وإدارة الحالة في قواعد البيانات، وتنفيذ آليات معقدة لمعالجة الأخطاء.
ماذا لو كانت هناك طريقة أبسط وأكثر موثوقية للتعامل مع سير العمل طويل الأمد دون متاعب إدارة كل هذه البنية التحتية؟ هذا هو الهدف من لغة بايثون المتينة، لتجربتها، قم بالتسجيل في النسخة التجريبية.
تخيل أنك تريد مراقبة طلبات السحب (PRs) في GitHub. في كل مرة يتم فيها فتح PR جديد، ترغب في إنشاء قناة Slack مخصصة للمناقشة وإرسال تذكيرات يومية حتى يتم إغلاق PR أو دمجه. يبدو هذا واضحًا، لذا قد تعتقد أنه يمكنك حل المشكلة باستخدام وظيفة Python الأساسية (إليك وظيفة Python الأساسية التي تم إنشاؤها بواسطة 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'})
يبدو أن مقتطف التعليمات البرمجية هذا يتعامل مع المهمة، ولكنه مناسب فقط لسيناريو "التدفق السعيد". في تطبيقات العالم الحقيقي، هذا النهج الساذج لا يكفي. تعتمد حلقة while على وقت تشغيل الخادم المستمر، وهو أمر غير مضمون. يمكن أن تتعطل العمليات، ويمكن إعادة تشغيل الخوادم، وفجأة، ينقطع سير عملك.
يتضمن النهج الأكثر موثوقية إنشاء تطبيق يعتمد على الأحداث. هنا، يمكنك استخدام قوائم الانتظار للاستماع إلى أحداث GitHub، ووظائف cron لإرسال التذكيرات، وقواعد البيانات لتخزين حالة العلاقات العامة والقناة، والوظائف للتعامل مع هذه الأحداث. عادةً، يتم تشغيل هذا الإعداد على البنية التحتية السحابية، مع الاستفادة من خدمات مثل AWS Lambda للنشر والتنفيذ.
على الرغم من أن هذه الطريقة مجدية وقوية، إلا أنها تتطلب أيضًا قدرًا كبيرًا من الإعداد والصيانة والخبرة. تتطلب إدارة البنية التحتية، وضمان وقت التشغيل، والتعامل مع حالات الخطأ موارد كبيرة وفريقًا ماهرًا.
ماذا لو كان بإمكانك الجمع بين بساطة كود Python الساذج وموثوقية التصميم غير المتزامن؟ ماذا لو تمكنت بايثون من ضمان أنه حتى في حالة تعطل العملية أو إعادة تشغيل الخادم، فإنها ستستأنف من حيث توقفت؟
يعالج AutoKitteh هذا التحدي بدقة باستخدام لغة Python المتينة. باستخدام لغة Python المتينة، يكتب المستخدم كود لغة Python بينما يضمن النظام أنه في حالة إعادة تشغيل العملية، فإنها تستمر في العمل من نفس النقطة. على الرغم من وجود قيود (على سبيل المثال، قد لا يكون التوقف الطويل مثاليًا)، إلا أن هذا الحل يعمل بشكل مثالي بالنسبة لمعظم حالات الاستخدام.
يوفر لك برنامج Durable-Python إدارة الحالة يدويًا، مما يسمح لك بكتابة سير العمل الخاص بك كتدفق مستمر بدلاً من آلة حالة تعتمد على الأحداث، الأمر الذي قد يكون من الصعب إنشاؤه وتصحيح الأخطاء. تتمتع AutoKitteh، باعتبارها بنية أساسية، بقوائم انتظار مدمجة وعمليات تكامل مع التطبيقات الخارجية وواجهات برمجة التطبيقات، مما يجعل من السهل تطوير مسارات عمل قوية بسرعة في Python.
لا يوجد سحر - مجرد هندسة قوية. يتم تشغيل AutoKitteh بواسطة Temporal، وهو إطار عمل لبناء مسارات عمل متينة. يتطلب الزماني طريقة محددة للترميز، بما في ذلك فهم الحتمية والعجز والمفاهيم الأخرى لضمان الموثوقية. يلخص AutoKitteh هذه التعقيدات، مما يسمح للمطورين بكتابة كود Python القياسي. تحت الغطاء، يتم تحويل أي وظيفة ذات آثار جانبية إلى نشاط مؤقت. كمطور، لا داعي للقلق بشأن هذه التفاصيل، فقط ركز على كتابة منطق العمل.
لمزيد من التفاصيل الفنية، راجع وثائق AutoKitteh.
وبطبيعة الحال، كل تجريد له ثمن. تحت الغطاء، تسجل لغة Python المتينة تدفق سير العمل لتمكين التعافي بعد الفشل، مما يؤدي إلى بعض تكاليف التخزين والأداء.
تم تصميم Python المتين لتنسيق واجهات برمجة التطبيقات بدلاً من إنشاء تطبيقات البيانات. إذا كنت بحاجة إلى تطبيقات عالية الأداء، فيجب عليك التفكير في إنشاء حل مخصص. ومع ذلك، إذا كنت ترغب في تطوير سير عمل موثوق به بسرعة مع الحد الأدنى من التطوير والاستثمار في البنية التحتية، فقد تكون لغة Python المتينة خيارًا جيدًا.
يمكن تطبيق لغة Python المتينة على مجموعة واسعة من مسارات العمل، خاصة في المجالات التي تكون فيها الموثوقية أمرًا بالغ الأهمية، مثل:
يمكن العثور على أمثلة لتدفقات العمل هنا.
يعمل مفهوم Python المتين، الذي يتم تنفيذه بواسطة AutoKitteh، على تمكين المطورين من إنشاء ونشر وإدارة أتمتة موثوقة لسير العمل بأقل قدر من التعليمات البرمجية. يتم التعامل مع التنفيذ الدائم والاسترداد السلس خلف الكواليس، حتى تتمكن من التركيز على ما يهم حقًا - منطق عملك.
على الرغم من وجود العديد من الأدوات الممتازة لتحقيق المتانة (مثل Temporal وRestate)، إلا أن تقنية Duar-Python توفر طريقة سريعة وبسيطة وفعالة من حيث التكلفة لتحقيق نفس النتائج.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3