Cloudflare Workers на Python получили прямой доступ к PostgreSQL и MySQL

Cloudflare Workers на Python получили прямой доступ к PostgreSQL и MySQL через Hyperdrive. Разбираем экономию, ограничения и безопасный тест миграции.

Wednesday, September 16, 2026Omid Saffari
Cloudflare Workers на Python получили прямой доступ к PostgreSQL и MySQL

16 сентября 2026 года Cloudflare открыла для Cloudflare Workers на Python прямой доступ к PostgreSQL и MySQL через Hyperdrive. Если раньше для подключения Worker к существующей базе данных приходилось держать отдельный HTTP-сервис, теперь такой сервис можно убрать — а вместе с ним пересмотреть архитектуру и ежемесячные расходы.

Базу данных переносить не нужно

Главное в этом релизе — возможность оставить данные там, где они уже находятся.

Hyperdrive — это управляемый слой соединений между Cloudflare Worker и существующей базой PostgreSQL или MySQL. Он не заменяет базу данных и не копирует записи в Cloudflare. Python-код открывает TCP-соединение через обычный драйвер, получая параметры подключения из привязки Hyperdrive. Сам Hyperdrive поддерживает долгоживущий пул соединений с базой данных.

Благодаря этому привычный обходной путь больше не обязателен. Раньше Python Worker без прямого доступа к базе мог обращаться к небольшому API или серверу, единственной задачей которого было выполнение SQL-запросов. Схема выглядела так:

Раньше: Python Worker → сервис-посредник → PostgreSQL или MySQL

Теперь: Python Worker → Hyperdrive → PostgreSQL или MySQL

Cloudflare устанавливает соединение рядом с Worker, а пул держит ближе к исходной базе. В руководстве по Hyperdrive указано, что при обычном подключении до первого запроса требуется семь сетевых обменов: один для TCP, три для TLS и три для аутентификации в базе данных. Повторное использование пула избавляет от полной настройки соединения при каждом коротком запуске Worker.

Схема подключения Python Worker к существующей базе данных через Hyperdrive без прежнего сервиса-посредника
База данных остается на месте. Hyperdrive может заменить сервис, который только передавал трафик к ней.

У этого сценария есть четкие условия. Для Python Workers нужна дата совместимости 2026-09-08 или более поздняя, а сама функция пока остается в бета-версии. Для PostgreSQL Cloudflare протестировала asyncpg, pg8000 и psycopg, для MySQL — aiomysql и pymysql. Рекомендованные драйверы — asyncpg и aiomysql.

По словам Cloudflare, могут работать и другие TCP-драйверы. Но это не означает, что совместимы все пакеты, ORM и существующие приложения. Поддерживаемая база данных — лишь первый этап проверки, а не гарантия всей миграции.

Как изменились расходы на подключение к базе

Самая очевидная экономия возникает, если Python-приложение уже работает на Workers, а отдельный сервис оплачивается только ради доступа Worker к базе данных.

Расчет прост:

Текущие ежемесячные расходы = база данных + Worker + хостинг сервиса-посредника

Возможные ежемесячные расходы = база данных + Worker

Плата за базу данных никуда не исчезает. За встроенный пул соединений и кеширование запросов Hyperdrive на тарифе Workers Paid отдельной платы нет; исходящий трафик Hyperdrive также не тарифицируется. Если аккаунт уже укладывается во включенные лимиты Workers, дополнительная стоимость этого способа подключения со стороны Cloudflare равна $0. Реальная экономия — счет за хостинг сервиса-посредника, который действительно удастся отключить.

Обслуживание нужно учитывать в том же расчете. Вместе с сервисом-посредником могут исчезнуть отдельный деплой, проверка работоспособности, набор секретов, поток логов и еще одна точка отказа. Не переводите эту работу в деньги, пока не ясно, кто занимается обслуживанием и как часто сервис создает проблемы.

Для нового платного аккаунта Workers Paid стоит от $5 за аккаунт в месяц. В тариф включены 10 миллионов запросов и 30 миллионов миллисекунд CPU в месяц. Сверх лимита взимается $0.30 за каждый дополнительный миллион запросов и $0.02 за каждый дополнительный миллион миллисекунд CPU. Число запросов Hyperdrive к базе данных в этом тарифе не ограничено.

Тарифа Free достаточно для небольшой проверки. Он включает 100,000 запросов к Worker в день и 100,000 запросов Hyperdrive к базе данных в день, при этом на один вызов отводится 10 миллисекунд CPU. Лимиты считаются отдельно: один запрос, выполняющий несколько SQL-команд, может израсходовать несколько запросов к базе.

Кому этот сценарий подойдет уже завтра

Независимому разработчику с сервисом на FastAPI

Представим разработчика, у которого FastAPI Worker обращается к управляемой базе PostgreSQL через небольшой контейнер: тот принимает HTTP-запросы и выполняет SQL. Если в контейнере нет бизнес-логики, тест с asyncpg покажет, способен ли Hyperdrive его заменить.

Смысл не в переходе на новую базу данных. Текущая схема базы, резервные копии и провайдер остаются прежними, а удалить можно сервис, служивший только адаптером подключения. Сначала стоит перенести один маршрут, сравнить результат и задержку, а отключать посредник — только после совпадения поведения в продакшене.

Небольшому агентству с клиентскими базами MySQL

Небольшое агентство может поддерживать несколько узких Python API, каждый из которых подключен к MySQL клиента. Новый вариант позволяет тестировать aiomysql или pymysql непосредственно в Worker, а не развертывать прокси базы данных рядом с каждым подходящим приложением.

Преимущество здесь — единообразие эксплуатации. Агентство сможет использовать общий процесс развертывания Worker и отдельную конфигурацию Hyperdrive для каждой базы. Но сервис-посредник нужно сохранить, если он отвечает за авторизацию арендаторов, преобразование схемы, аудит или другую работу помимо передачи запросов.

Платформенной команде, переносящей один маршрут с большим числом чтений

Платформенной команде не обязательно переносить весь бэкенд. Можно вынести на Workers один публичный Python-маршрут с преобладанием чтения, оставить базу данных в своем регионе и поручить Hyperdrive управление пулом соединений с ней.

Именно здесь нужно заранее определить правила кеширования. По умолчанию Hyperdrive кеширует подходящие операции чтения на 60 секунд, а во время повторной проверки может еще 15 секунд отдавать устаревший результат. Для публичного каталога или контента это может быть приемлемо. Аутентификация, права доступа, состояние оплаты и чтение сразу после записи должны использовать отдельную конфигурацию Hyperdrive с отключенным кешем.

Определиться с фреймворком по-прежнему поможет опубликованное ранее сравнение Django и FastAPI. Новый релиз меняет лишь одну часть решения: сохранение PostgreSQL или MySQL теперь официально поддерживается для Python Worker, но это не гарантирует совместимость остальных компонентов приложения на Django или FastAPI.

Минимальный безопасный тест Cloudflare Workers на Python

Используйте тестовую базу MySQL, не связанную с продакшеном, и пользователя с ограниченными правами. Задача — проверить подключение командой SELECT 1, а не репетировать полную миграцию на данных клиентов.

Создайте конфигурацию Hyperdrive с отключенным кешем, чтобы в первом тесте измерить полный обмен с базой без влияния кеша:

Bash
npx wrangler hyperdrive create python-db-test --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" --caching-disabled

Скопируйте идентификатор конфигурации из Wrangler в wrangler.toml. Указанная ниже дата позже обязательного минимума 2026-09-08:

TOML
name = "python-hyperdrive"
main = "src/main.py"
compatibility_date = "2026-09-16"
compatibility_flags = ["python_workers"]

[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<HYPERDRIVE_CONFIG_ID>"

Добавьте драйвер в pyproject.toml:

TOML
[project]
dependencies = [
    "aiomysql",
]

Затем добавьте в src/main.py тест подключения из документации Cloudflare:

Python
import aiomysql
from workers import Response, WorkerEntrypoint


class Default(WorkerEntrypoint):
    async def fetch(self, request):
        hd = self.env.HYPERDRIVE
        connection = await aiomysql.connect(
            host=hd.host,
            port=int(hd.port),
            user=hd.user,
            password=hd.password,
            db=hd.database,
            ssl=None,
        )
        try:
            cursor = await connection.cursor()
            await cursor.execute("SELECT 1")
            result = await cursor.fetchone()
            return Response.json({"result": result[0]})
        finally:
            connection.close()

Для развертывания используйте команду из документации Python Workers:

Bash
uv run pywrangler deploy

Строка ssl=None часто выглядит ошибкой. В примере Cloudflare так настроено соединение драйвера между Worker и Hyperdrive. Соединение Hyperdrive с исходной базой по-прежнему требует TLS; небезопасные незашифрованные подключения к ней не поддерживаются.

Сервис-посредник теперь необязателен, но списывать его рано

Релиз меняет способ подключения, но не превращает Python Workers в сервер CPython без ограничений.

Поддержка пакетов охватывает пакеты на чистом Python, wheel-пакеты PyEmscripten и пакеты из состава Pyodide. Cloudflare по-прежнему отмечает, что поддержка пакетов WebAssembly находится на ранней стадии, поэтому отсутствующая зависимость может остановить миграцию. В текущей документации по драйверам и ORM поддерживается только синхронная SQLAlchemy. Асинхронная SQLAlchemy не работает, поскольку в среде Workers нет поддержки greenlet.

Ограничения есть и на уровне протокола базы данных. Hyperdrive поддерживает PostgreSQL с 9.0 по 17.x и MySQL с 5.7 по 8.x, а также MariaDB. SQL Server и MongoDB не поддерживаются. В PostgreSQL недоступны рекомендательные блокировки, а также LISTEN и NOTIFY. В MySQL нельзя использовать запросы из нескольких операторов и подготовленные операторы на уровне протокола. Максимальная длительность запроса на тарифах Free и Paid — 60 секунд.

Пул соединений также меняет ожидания от сессии. Hyperdrive использует пул на уровне транзакций: после завершения транзакции соединение с исходной базой возвращается в пул. Код, рассчитывающий сохранить состояние сессии между транзакциями, нужно проверить. Долгие транзакции могут исчерпать пул и свести на нет выигрыш в параллельной обработке.

Что сделать в понедельник

Не начинайте неделю с миграции всего приложения. Сначала выясните, действительно ли нужен хотя бы один сервис-посредник, который занимается только базой данных.

  1. Выберите один безопасный тестовый маршрут

    Создайте тестовую базу данных или реплику, не связанную с продакшеном, и пользователя с ограниченными правами. Выберите маршрут, который читает безвредную запись и не зависит от состояния сессии, блокировок или получения свежих данных сразу после записи.

  2. Проведите базовую проверку подключения

    Разверните небольшой Worker из примера выше и убедитесь, что SELECT 1 выполняется через Hyperdrive. Запишите частоту ошибок Worker, время CPU, полное время выполнения и количество соединений с базой данных.

  3. Проверьте реальный драйвер и запрос

    Перейдите с тестовой команды на реальный драйвер маршрута и один типичный запрос. Сопоставьте возвращаемые данные, работу транзакций, настройки кеша и использование пула с текущим сервисом-посредником.

  4. Посчитайте выгоду от отключения

    Зафиксируйте ежемесячную стоимость хостинга посредника и часы, которые уходят на его развертывание, обновление, мониторинг и восстановление. Вычтите дополнительные расходы на Workers и постоянные трудозатраты на Hyperdrive. Удаляйте сервис, только если и расчет, и тест совместимости дают положительный ответ.

Действуйте на этой неделе, если посредник нужен только для доступа к базе, приложение использует PostgreSQL или MySQL, а маршрут покрывает один из протестированных драйверов. Подождите, если проект зависит от асинхронной SQLAlchemy, недоступного пакета, неподдерживаемого поведения SQL или строгой согласованности чтения сразу после записи, которую вы еще не отделили. Изменение вас не касается, если приложение остается на текущем сервере или сервис-посредник содержит бизнес-логику, которую Hyperdrive не заменяет.

Чтобы и следующее изменение платформы превратить в решение на понедельник, подпишитесь на рассылку.

Последнее обновление
16 сент. 2026 г.
Категория
Explained

Сделать этот сайт предпочтительным в Google

Добавить omidsaffari.com как предпочтительный источник в Google Поиске

Отметьте omidsaffari.com как предпочтительный источник — и Google будет поднимать его для вас в Top Stories, AI Overviews и AI Mode.

Похожие статьи
Gemini 3.8 Live: как голосовой ИИ-агент работает без пауз

Gemini 3.8 Live: как голосовой ИИ-агент работает без пауз

Gemini 3.8 Live позволяет голосовому ИИ-агенту говорить во время фоновых вызовов инструментов. Разбираем сценарии, риски и стоимость завершённой задачи.16 сент. 2026 г.Explained
Права доступа Cloudflare Workers: безопасный деплой для клиента

Права доступа Cloudflare Workers: безопасный деплой для клиента

Cloudflare позволяет выдать права только на один Worker. Разбираем, как разделить отладку, ревью кода и деплой между клиентскими проектами без лишнего доступа.15 сент. 2026 г.Explained
Доступ Claude Code к сети теперь выдаётся на одну команду

Доступ Claude Code к сети теперь выдаётся на одну команду

Claude Code 2.1.271 открывает нужный домен только на время одной команды: установка зависимостей получает сеть, а следующие шаги не наследуют доступ.15 сент. 2026 г.Explained
Vercel AI SDK: как оплачивать агентов действующей подпиской

Vercel AI SDK: как оплачивать агентов действующей подпиской

Vercel AI SDK теперь использует подписки Claude Code, Codex и других агентов. Объясняем приоритет учётных данных, общие лимиты и расходы Sandbox.15 сент. 2026 г.Explained
Автоматизация браузера в Cloudflare: контроль хостов

Автоматизация браузера в Cloudflare: контроль хостов

Как ограничить автоматизацию браузера в Cloudflare списком разрешённых хостов, открыть Live View только для просмотра и учесть стоимость Browser Sessions.14 сент. 2026 г.Explained
Стоимость голосового ИИ-агента на GPT-Live-1: полный расчет

Стоимость голосового ИИ-агента на GPT-Live-1: полный расчет

Разбираем стоимость голосового ИИ-агента на GPT-Live-1: $0.05 за минуту голосовой сессии, расходы на бэкенд, инструменты и телефонный трафик.14 сент. 2026 г.Explained
ChatGPT Appshots в Windows: контекст без ручного копирования

ChatGPT Appshots в Windows: контекст без ручного копирования

Разбираемся, как ChatGPT Appshots в Windows передаёт окно приложения в чат, экономит время на сборе контекста и какие данные важно проверить.14 сент. 2026 г.Explained
FastAPI на Vercel: когда статика больше не вызывает Functions

FastAPI на Vercel: когда статика больше не вызывает Functions

FastAPI на Vercel теперь отдаёт подходящую статику через CDN без вызова Functions. Разбираем экономию, правила маршрутов и риски обхода защиты.13 сент. 2026 г.Explained
Рассылка

Одно письмо, каждое воскресенье.Работающие системы, а не горячие мнения.

Еженедельно. Без спама. Отписка в любой момент.