عنوان URL للمنتج: https://euromillions.api.pedromealha.dev
عنوان URL المرحلي: https://euromillions.staging.api.pedromealha.dev
المكدس الفني : Python، Flask، PostgreSQL، Docker، Terraform، Github Actions
إخلاء المسؤولية : يتم تحليل بيانات النتائج في واجهة برمجة التطبيقات هذه من موقع https://www.euro-millions.com. البيانات هي لأغراض إعلامية فقط، ويجب ألا تفسر هذه المعلومات أو البيانات الأخرى على أنها نصيحة مالية. لا يوجد شيء وارد في واجهة برمجة التطبيقات هذه يشكل التماسًا أو توصية أو تأييدًا أو عرضًا لشراء تذاكر Euromillions. لا تنتمي واجهة برمجة التطبيقات هذه بأي شكل من الأشكال إلى منظمة Euromillions.
واجهة برمجة تطبيقات REST صغيرة لمسابقة Euromillions. ستجد هنا جميع النتائج منذ عام 2004 وبعض الإحصائيات/التحليلات.
تحتوي نقطة النهاية لسحوبات feth على بعض الميزات الرائعة لتصفية السحوبات حسب year
أو dates
.
وقد تم ذلك بسبب عدم وجود طريقة للحصول على هذه البيانات بسهولة. وبما أن هذه المعلومات هي معلومات عامة، فيجب على المؤسسات توفير واجهة برمجة التطبيقات (API) لها. وفي الوقت نفسه، باستخدام نقاط النهاية هذه، يمكن للمجتمع إنشاء منتجات مذهلة حول سياق Euromillions، إما تطبيق جوال أو تطبيق ويب.
سيكون هدفي أيضًا هو إنشاء تطبيق ويب للسماح بإنشاء أرقام للعب بناءً على الإحصائيات/التحليلات.
بالنسبة للوثائق استخدمنا مواصفات OpenAPI. لدينا جميع نقاط النهاية المتاحة مع المخططات والأمثلة لكل حالة استخدام. ليس فقط لأنه معيار صناعي لاستخدامه، ولكن أيضًا لأنه من السهل جدًا تحديثه وقراءته.
فيما يتعلق بقاعدة البيانات، نستخدم لغة ترميز قاعدة البيانات - DBML للاختصار. مرة أخرى، إنه لأمر مدهش حقًا ويمكنه تسريع سرعة أي نجار جديد على الفور. هناك أيضًا أداة عبر الإنترنت لتصور مخططات الجدول.
يمكنك التحقق من المستندات الحالية هنا
بالنسبة لنتائج سحوبات Euromillions، استخدمنا الموقع الإلكتروني https://www.euro-millions.com. يحتوي على صفحات تحتوي على بيانات تاريخية لجميع نتائج السحوبات الحالية. نحن لا نستهلك أي واجهة برمجة تطبيقات، بل نقوم بتحليل صفحة الويب للحصول على البيانات المحددة التي نحتاجها.
بالنسبة للسحوبات الجديدة، لدينا وظيفة cronjob التالية قيد التشغيل:
# كل ثلاثاء وجمعة كل 15 دقيقة خلال 21h-23h*/15 21-23 * * 2,5 flyctl ssh console -a prod-euromillions-api -C "sh app/scripts/cronjobs/add_draws.sh"*/15 21 -23 * * 2,5 وحدة التحكم flyctl ssh -a التدريج-euromillions-api -C "sh app/scripts/cronjobs/add_draws.sh"
سيقوم هذا الأمر بتشغيل البرنامج النصي لإضافة عمليات السحب داخل حاويات الإنتاج والتدريج الخاصة بنا. بهذه الطريقة نضمن أن الكود يعمل في نفس البيئة ولا نحتاج إلى نقطة نهاية مكشوفة للقيام بذلك.
لقد استفدنا من القوة والبساطة التي تتمتع بها Github Actions. كان من السهل دمج تدفق النشر الخاص بنا من أجل التدريج والإنتاج. لدينا أيضًا Terraform قيد التشغيل في جميع عمليات سير العمل لدينا. حاليًا، نستخدم سجل حاوية Github لدفع صورة عامل الإرساء التي سنستخدمها لتشغيل واجهة برمجة التطبيقات (API) الخاصة بنا. نظرًا لأن Fly.io لا يسمح لنا بالحصول على بيئات مختلفة، فقد احتجنا إلى إنشاء تطبيقات مختلفة للعرض المسرحي والإنتاج. بمجرد أن ندفع الصورة، نحتاج فقط إلى إنشاء إصدار جديد حتى يكون لدينا إصدار جديد قيد التشغيل. يعد هذا تحسنًا كبيرًا لأن واجهة برمجة التطبيقات (API) الخاصة بنا تعمل الآن في حاوية، مما يتيح سهولة النشر والصيانة.
لحسن الحظ، يمكننا استخدام Terraform لإدارة Fly.io بالأشعة تحت الحمراء باستخدام الكود. نظرًا لعدم وجود الكثير مما يجب فعله، نستخدم حاليًا terraform لإنشاء التطبيق وعناوين IP العامة للتطبيق وشهادات المجال. بالنسبة لقاعدة البيانات، لا يزال Fly.io لا يسمح بإدارتها باستخدام terraform، لذلك كان علينا إنشاؤها يدويًا باستخدام flyctl
. تم دمج هذا في CI الخاص بنا في سير العمل المرحلي والإنتاجي مع مساحات العمل الخاصة بكل منها.
لدينا طريقتان للعمل محليًا في هذا المشروع: عامل الإرساء أو تشغيل تطبيق الفلاش.
للبدء في استنساخ الريبو
استنساخ بوابة https://github.com/pedro-mealha/euromillions-apicd euromillions-api
بناء وبدء تشغيل حاوية عامل الإرساء
قم بعمل start_docker
سيؤدي هذا إلى بدء حاوية تحتوي على قاعدة بيانات postgres وحاوية أخرى بها صورة بايثون. في حاوية python، سيتم نسخ جميع ملفات المشاريع وتثبيت المتطلبات وأخيرًا تشغيل تطبيق flask.
تأكد من تثبيت python 3.12 وقاعدة بيانات postgres.
متطلبات التثبيت.
تثبيت النقطة -r متطلبات.txt
تشغيل تطبيق قارورة
ابدأ
بالنسبة للهجرات نستخدم يويو. إنه أمر سهل حقًا ولكن مع ذلك لدينا بعض الأوامر في Makefile:
لتشغيل عمليات الترحيل:
جعل الهجرة
للتراجع عن عملية الترحيل الأخيرة:
إجراء ترحيل_التراجع
يعد إنشاء عملية ترحيل جديدة أمرًا صعبًا بعض الشيء، لأننا لم نحب ملف .py لذلك قررنا استخدام ملفات SQL الأولية. ولكن هذا يأتي بتكلفة نحتاجها لإنشاء ملفات جديدة يدويًا.
ما عليك سوى اتباع النمط الموجود بالفعل ويجب أن يكون سهلاً إلى حد ما.
مرخص من معهد ماساتشوستس للتكنولوجيا (ملف الترخيص).