URL-адрес продукта: https://euromillions.api.pedromealha.dev.
Промежуточный URL: https://euromillions.staging.api.pedromealha.dev.
Технический стек : Python, Flask, PostgreSQL, Docker, Terraform, действия Github.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Данные результатов в этом API анализируются с веб-сайта https://www.euro-millions.com. Данные предназначены только для информационных целей, вы не должны истолковывать такую информацию или другие данные как финансовые рекомендации. Ничто из содержащегося в этом API не является призывом, рекомендацией, одобрением или предложением купить билеты Euromillions. Этот API никоим образом не связан с организацией Euromillions.
Небольшой REST API для конкурса Euromillions. Здесь вы найдете все результаты с 2004 года и немного статистики/аналитики.
Конечная точка для проверки розыгрышей имеет несколько интересных функций для фильтрации розыгрышей по year
или dates
.
Это было сделано из-за отсутствия способа легко получить эти данные. Поскольку эта информация является общедоступной, учреждениям следует предоставить для нее API. Между тем, с помощью этих конечных точек сообщество может создавать потрясающие продукты в контексте Euromillions, будь то мобильное или веб-приложение.
Моей целью также будет создание веб-приложения, позволяющего генерировать цифры для игры на основе статистики/аналитики.
Для документации мы использовали спецификацию OpenAPI. У нас есть все доступные конечные точки со схемами и примерами для каждого варианта использования. Это не только потому, что его использование является отраслевым стандартом, но и потому, что его действительно легко обновлять и читать.
Что касается базы данных, мы используем язык разметки базы данных — сокращенно DBML. Опять же, это действительно потрясающе и может сразу же ускорить работу любого нового столяра. Существует также онлайн-инструмент для визуализации схем таблиц.
Вы можете проверить текущие документы здесь
Для получения результатов тиражей евромиллионов мы использовали сайт https://www.euro-millions.com. Он имеет страницы с историческими данными для всех существующих результатов розыгрышей. Мы не используем какой-либо API, мы анализируем веб-страницу на предмет конкретных данных, которые нам нужны.
Для новых розыгрышей у нас выполняется следующее задание cron:
# Каждый вторник и пятницу каждые 15 минут в течение 21–23 часов*/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 staging-euromillions-api -C "sh приложение/скрипты/cronjobs/add_draws.sh"
Эта команда запустит сценарий для добавления отрисовок в наши производственные и промежуточные контейнеры. Таким образом, мы гарантируем, что код работает в одной и той же среде, и нам не нужна для этого открытая конечная точка.
Мы воспользовались мощью и простотой Github Actions. Было легко интегрировать наш процесс развертывания для промежуточной подготовки и производства. У нас также во всех наших рабочих процессах используется Terraform. В настоящее время мы используем реестр контейнеров Github для отправки образа Docker, который мы будем использовать для запуска нашего API. Потому что Fly.io не позволяет нам иметь разные среды, необходимые для создания разных приложений для промежуточного и производственного использования. Как только мы отправим образ, нам нужно будет только сделать новый выпуск, чтобы новая версия была запущена и работала. Это большое улучшение, поскольку теперь наш API работает в контейнере, что упрощает его развертывание и обслуживание.
К счастью, мы можем использовать Terraform для управления инфраструктурой Fly.io с помощью кода. Поскольку делать особо нечего, прямо сейчас мы используем terraform для создания приложения, общедоступных IP-адресов приложения и сертификатов домена. Что касается базы данных, Fly.io по-прежнему не позволяет управлять ими с помощью terraform, поэтому нам пришлось создавать их вручную с помощью flyctl
. Это интегрировано в нашу CI в промежуточных и производственных рабочих процессах с соответствующими рабочими пространствами.
У нас есть два способа локальной работы над этим проектом: Docker или запуск флэш-приложения.
Для начала клонируйте репо
git клон https://github.com/pedro-mealha/euromillions-apicd euromillions-api
Сборка и запуск докер-контейнера
сделать start_docker
Это запустит контейнер с базой данных Postgres и другой контейнер с изображением Python. В контейнере Python он скопирует все файлы проектов, установит требования и, наконец, запустит приложение flask.
Убедитесь, что у вас установлен Python 3.12 и база данных Postgres.
Требования к установке.
pip install -r требования.txt
Запустить приложение Flask
начать
Для миграции мы используем yoyo. Это действительно просто, но, тем не менее, у нас есть несколько команд в Makefile:
Чтобы запустить миграцию:
сделать миграцию
Чтобы откатить последнюю миграцию:
сделать миграцию_rollback
Создать новую миграцию немного сложнее, потому что нам не понравился файл .py, поэтому мы решили использовать необработанные файлы sql. Но за это приходится платить, поскольку нам приходится создавать новые файлы вручную.
Просто следуйте уже существующему шаблону, и это должно быть довольно легко.
Лицензия MIT (файловая ЛИЦЕНЗИЯ).