Рубрики
Без рубрики

Развертывайте Fastapi Serverless-Ly

В этом посте мы смотрим, как развернуть приложение Fastapi на платформе без сервера. Платформа т … Помечено с Python, Serverless, Redis.

В этом посте мы смотрим, как развернуть приложение Fastapi на платформе без сервера. Платформа, которую мы развернуем, это Vercel Отказ Vercel предоставляет щедрый свободный уровень для размещения нашего приложения. Приложение, которое мы строим для этого поста, представляет собой счетчик просмотра GitHub, который подсчитывает количество посещений страниц.

Что такое безверенно?

Serverless не работает. Это своего рода платформа, где застройщик меньше беспокоит о развертывании. Serverless позволяет вам проводить все время на разработку вашего приложения. Когда дело доходит до развертывания, push, и платформа без сервеса заботятся о остальных.

Преимущества Serverless
  • Нет управления сервером – Приложение работает на сервере, но разработчик не нужно беспокоиться о настройке сервера
  • Оплатить за то, что вы используете – Безсекретная платформа за счет того, что вы используете, такие как CPU, функциональные вызовы и т. Д. Некоторые даже рассчитают цену до миллисекунды.
  • Автоматическое масштабирование – они масштабируются вверх и вниз по требованию
  • Быстрое развертывание – Нажмите репозиторий/рабочее пространство для развертывания. Безенсовый часто развертывается в быстром времени, и это позволяет легко отправлять обновления.
  • Низкая задержка – код может работать ближе к пользователю.
Нисходящие
  • Тестирование – боль – Это не легко повторять безрусной среду.
  • Процесс краткосрочной работы – Свободный уровень Vercel обеспечивает только 10 секунд на вызов функции (цикл запроса-ответ). Это удобно для некоторых задач, это удобно, но вы не можете запустить какие-либо фоновые задачи, которые работают долго.
  • Холодный старт – Если функции не вызываются некоторое время, код без сервера заснутся для сохранения памяти и использования CPU. Когда запрос сделан, код просыпается ( холодный запуск ). Это создает проблемы с производительностью из-за медленного ответа. Если код без сервера последовательно работает, не будет никаких проблем с производительностью.

Github View Counter.

Счетчик просмотра GitHub – это простое приложение, которое считается количеством раз, когда рассматривается страница. VC стал популярным после того, как GitHub представил профиль Readmes.

Счетчик счетчиков, когда запрос отправляется на конечную точку. Это отвечает, отправив SVG, который содержит счет. Изображения/SVG – единственный способ получить внешние источники в файл Readme в ароматизированном отметке.

Поскольку эти активы выявлены на небезопасную HTTP Call, Github прокси все Звонки на сервер, работающий на Heroku Теперь все запросы происходят из одного источника, прокси-сервера. Это делает очень трудно сосчитать уникальные пользователи, поэтому мы рассчитываем количество раз, когда ресурс был доставлен.

Создание нашего применения

Установка требований
pip install fastapi 

Нам не нужен сервер здесь, так как не позаботится сервера.

Получение пользовательского SVG (значок)

Нам нужно получить SVG отправить обратно пользователю. Вы должны увидеть пользовательскую форму значков для навигации по https://shields.io и прокрутите вниз. Тип в этикетках как Просмотр профиля и некоторое случайное значение для метки 26 Отказ

Теперь нажмите «Создать». Это должно генерировать значок на новой вкладке. Теперь щелкните правой кнопкой мыши и Просмотр источника страницы Чтобы получить HTML шаблон для значка. Создайте функцию лямбда, чтобы принять переменную Считать и заменить все экземпляры 26 с {count} (Используйте F-струны).

SVG_STRING = (
    lambda count: f"""

    Profile Views: 
        {count}
    
    
        
    
    
        
    
    
        
        
        
    
    
        
        
            Profile Views
        
        
        
            {count}
        
    

"""
)

Я использовал простой Dict для базы данных. Но когда Where Serverless создал несколько экземпляров функций, он создал несколько копий диктома с разными значениями – это приводит к возвращению разных значений на каждый запрос. Использование внешней базы данных работает лучше всего. Мы будем использовать Redis Отказ Перейти к https://redislabs.com/ и создать бесплатный аккаунт. Войти и выберите Redis Enterprise Cloud Отказ Создайте новую подписку на любой облачный сервис (AWS, GCP, Azure), выбрав бесплатный план (30 МБ). Как только подписка будет создана, скопируйте конечную точку и пароль и сохраните их в безопасном месте.

Установите Redis для Python.

pip install redis

Создайте подключение Redis в приложение

db = Redis(
    host=getenv("REDIS_ENDPOINT"),
    port=getenv("REDIS_PORT"),
    password=getenv("REDIS_PASSWORD"),
)

Теперь мы определяем контраческую конечную точку, как,

@app.get("/api/")
def user_count(username: str = "amalshaji", title: str = "Profile"):
    title = title.capitalize()
    count = db.get(username)
    if count is not None:
        db.incr(username, amount=1)
        count = count.decode()
        return Response(
            content=SVG_STRING(title, count + 1), media_type="image/svg+xml"
        )
    db.set(username, 1)
    return Response(content=SVG_STRING(title, 1), media_type="image/svg+xml")

Маршрут /API. берет два параметра, имя пользователя и Название Отказ Имя пользователя по умолчанию для amalshaji и название по умолчанию для Профиль . Вы можете использовать случайное удостоверение личности как имя пользователя и название AS Проект отслеживать конкретный счет просмотра проекта.

Развертывание до Vercel.

Создайте учетную запись на Vercel Отказ

После создания учетной записи установите VERCEL-CLI и войдите в систему

npm i -g vercel
vercel login

Теперь создайте vercel.json В каталоге проекта для настройки конфигурации VERCEL.

// vercel.json

{
    "version": 2,
    "builds": [
        {
            "src": "app.py",
            "use": "@now/python"
        }
    ],
    "routes": [
        {
            "src": "(.*)",
            "dest": "app.py"
        }
    ]
}

Vercel позволяет создать среду без сердца, используя Vercel Dev команда. В моем случае он всегда был терпеть неудачу, хотя код был успешно развернут.

Перед запуском приложения нам нужно настроить переменные среды. Перейдите к панели инструментов проекта (в моем случае https://vercel.com/amalshaji/pvc ). Нажмите на Настройки Вкладка и выберите Переменные среды Отказ Установите три переменных среды, Redis_endpoint , Redis_port и Redis_Password Отказ

Порт Redis не предоставляется отдельно. Конечная точка в формате URL: порт Отказ

Vercel автоматически зашифрует все переменные среды.

Как только это сделано, разверните приложение для предварительного просмотра, запустив Vercel Отказ Как только развертывание будет завершено, он предоставит ссылку предварительного просмотра.

Перейдите к предварительному просмотру и проверите приложение. После удовлетворения, нажмите развертывание предварительного просмотра до производства, используя Vercel - производство

Вот и все. Счетчик просмотра профиля успешно работает, в моем случае, в https://pvc.verecel.app Отказ

Демонстрация

Этот счетчик может быть подделанным. Нет смысла подделать номера с помощью спама. Миллиард просмотров означает, что счетчик ударил 1 миллиард раз.

Инструкции для самообедания будут доступны на REPO GitHub. Вы можете настроить, чтобы соответствовать вашим корпусу использования.

Ссылки

GitHub: amalshaji/PVC.

Читайте о лимитах Vercel на свободном уровне здесь

Если у вас есть настройки Redis или любая другая база данных, вы можете напрямую развернуть, нажав кнопку ниже,

Оригинал: “https://dev.to/amal/deploying-fastapi-serverless-ly-6b3”