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

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 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 с отключенным кешем, чтобы в первом тесте измерить полный обмен с базой без влияния кеша:
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:
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:
[project]
dependencies = [
"aiomysql",
]Затем добавьте в src/main.py тест подключения из документации Cloudflare:
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:
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 использует пул на уровне транзакций: после завершения транзакции соединение с исходной базой возвращается в пул. Код, рассчитывающий сохранить состояние сессии между транзакциями, нужно проверить. Долгие транзакции могут исчерпать пул и свести на нет выигрыш в параллельной обработке.
Что сделать в понедельник
Не начинайте неделю с миграции всего приложения. Сначала выясните, действительно ли нужен хотя бы один сервис-посредник, который занимается только базой данных.
Выберите один безопасный тестовый маршрут
Создайте тестовую базу данных или реплику, не связанную с продакшеном, и пользователя с ограниченными правами. Выберите маршрут, который читает безвредную запись и не зависит от состояния сессии, блокировок или получения свежих данных сразу после записи.
Проведите базовую проверку подключения
Разверните небольшой Worker из примера выше и убедитесь, что
SELECT 1выполняется через Hyperdrive. Запишите частоту ошибок Worker, время CPU, полное время выполнения и количество соединений с базой данных.Проверьте реальный драйвер и запрос
Перейдите с тестовой команды на реальный драйвер маршрута и один типичный запрос. Сопоставьте возвращаемые данные, работу транзакций, настройки кеша и использование пула с текущим сервисом-посредником.
Посчитайте выгоду от отключения
Зафиксируйте ежемесячную стоимость хостинга посредника и часы, которые уходят на его развертывание, обновление, мониторинг и восстановление. Вычтите дополнительные расходы на Workers и постоянные трудозатраты на Hyperdrive. Удаляйте сервис, только если и расчет, и тест совместимости дают положительный ответ.
Действуйте на этой неделе, если посредник нужен только для доступа к базе, приложение использует PostgreSQL или MySQL, а маршрут покрывает один из протестированных драйверов. Подождите, если проект зависит от асинхронной SQLAlchemy, недоступного пакета, неподдерживаемого поведения SQL или строгой согласованности чтения сразу после записи, которую вы еще не отделили. Изменение вас не касается, если приложение остается на текущем сервере или сервис-посредник содержит бизнес-логику, которую Hyperdrive не заменяет.
Чтобы и следующее изменение платформы превратить в решение на понедельник, подпишитесь на рассылку.
- Последнее обновление
- 16 сент. 2026 г.
- Категория
- Explained







