Статья A.S Groups

Cloudflare Hyperdrive для Python Workers: PostgreSQL и MySQL на edge

Cloudflare Hyperdrive соединяет Python Workers с PostgreSQL и MySQL

Навигация по статье

Услуги A.S Groups

Нужен сайт, магазин или автоматизация?

Помогаю бизнесу запускать и дорабатывать WordPress-проекты: от посадочной страницы до WooCommerce, CRM и Telegram-уведомлений.

Обсудить проект Telegram
WordPress под ключ Лендинги, корпоративные сайты и структура под заявки. WooCommerce Интернет-магазины, каталог, оплата, доставка и интеграции. Доработка сайта Правки, скорость, формы, баги и развитие текущего проекта. CRM / Telegram / AI Автоматизация заявок, уведомлений и ручных процессов.

16 сентября 2026 года Cloudflare добавил поддержку Hyperdrive в Python Workers. Это позволяет Python-приложению на Workers подключаться к существующей PostgreSQL- или MySQL-базе через Hyperdrive, не вынося backend на отдельный VPS только ради TCP-соединения с БД.

Для проектов с API, ботами, интеграциями и небольшими serverless-сервисами изменение практичное: Python Worker можно оставить на edge, а данные — в уже существующей региональной базе. При этом важно учитывать, что поддержка Hyperdrive в Python Workers пока имеет статус beta.

Что даёт Hyperdrive

Hyperdrive работает как слой между Worker и существующей PostgreSQL/MySQL-базой. Cloudflare поддерживает пул соединений внутри своей сети и сокращает лишние сетевые round trip при установлении соединения. Для read-запросов Hyperdrive также умеет использовать кэширование.

Саму базу переносить в Cloudflare не требуется. Hyperdrive поддерживает обычные PostgreSQL и MySQL, а также совместимые сервисы и провайдеры, включая managed-базы в AWS, Google Cloud, Azure, Neon, PlanetScale и другие совместимые решения.

Что изменилось именно для Python Workers

До этого Hyperdrive в первую очередь использовался из JavaScript/TypeScript Workers. Теперь Python Workers могут получать Hyperdrive binding и устанавливать соединение через TCP socket support.

По текущей документации Cloudflare для Python Workers требуется compatibility_date не раньше 2026-09-08. В конфигурации также используется флаг python_workers.

{
  "name": "python-hyperdrive",
  "main": "src/main.py",
  "compatibility_date": "2026-09-16",
  "compatibility_flags": ["python_workers"],
  "hyperdrive": [{"binding": "HYPERDRIVE", "id": "<HYPERDRIVE_CONFIG_ID>"}]
}

Какие драйверы поддерживаются

Cloudflare пишет, что технически можно использовать Python-драйверы, которые работают через TCP, но отдельно перечисляет протестированные варианты.

База Рекомендуемый драйвер Также протестированы
PostgreSQL asyncpg pg8000, psycopg
MySQL aiomysql pymysql

Пример PostgreSQL через asyncpg

После добавления binding параметры подключения доступны через self.env.HYPERDRIVE. В Python Worker можно передать их привычному драйверу:

import asyncpg
from workers import WorkerEntrypoint, Response

class Default(WorkerEntrypoint):
    async def fetch(self, request):
        hd = self.env.HYPERDRIVE
        conn = await asyncpg.connect(
            host=hd.host,
            port=int(hd.port),
            user=hd.user,
            password=hd.password,
            database=hd.database,
            ssl=False,
        )
        value = await conn.fetchval("SELECT 1")
        await conn.close()
        return Response.json({"ok": value == 1})

Здесь Worker подключается не напрямую к публичному адресу БД, а к параметрам, которые предоставляет Hyperdrive binding.

Пример MySQL через aiomysql

import aiomysql
from workers import WorkerEntrypoint, Response

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

Почему Hyperdrive полезнее прямого подключения

Региональная база может находиться далеко от пользователя, а Worker выполняется в сети Cloudflare рядом с запросом. Если каждый Worker заново проходит TCP/TLS/authentication до origin, задержка складывается из нескольких сетевых обменов.

Hyperdrive держит соединения к базе через свою инфраструктуру и повторно использует их. Это особенно заметно для API, где один HTTP-запрос делает один-два коротких SQL-запроса и сам SQL выполняется быстрее, чем устанавливается новое соединение.

Ограничения beta, которые нужно учитывать

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

  • TCP socket support. Большинство стандартных socket-операций работает, но низкоуровневые сценарии могут отличаться от обычного CPython на Linux.
  • Concurrency. Внутренняя реализация сокетов асинхронная, однако синхронные операции с драйвером нужно сериализовать, если библиотека не рассчитана на параллельный доступ.
  • SQLAlchemy. В Python Workers сейчас поддерживается только синхронный SQLAlchemy ORM. Async SQLAlchemy пока ограничен отсутствием greenlet в среде Workers.
  • Драйверы. Лучше начинать с вариантов, которые Cloudflare явно протестировал, а не переносить произвольную библиотеку без проверки.

Нужно ли включать SSL в Python-драйвере

В официальных примерах Python Workers для подключения к Hyperdrive у asyncpg используется ssl=False, а у aiomysqlssl=None. Это относится к соединению Worker → Hyperdrive. Настройки защищённого соединения Hyperdrive → origin задаются конфигурацией Hyperdrive и инфраструктурой базы.

Не стоит механически переносить параметры из прямого connection string к базе: Worker подключается к Hyperdrive endpoint, а не к origin тем же способом, что локальное приложение.

Когда архитектура подходит

  • serverless API на Python должен читать или изменять данные существующей PostgreSQL/MySQL;
  • нужно оставить базу у текущего провайдера, но приблизить backend-обработчик к пользователям;
  • Cloudflare Worker используется как API-шлюз между сайтом, CRM, ботом и базой;
  • проект не хочется переносить на D1 только ради запуска на Workers;
  • нужно использовать Python-библиотеки и привычный SQL-драйвер вместо переписывания backend на JavaScript.

Когда лучше не спешить

Если приложение сильно зависит от нестандартных socket-возможностей, async SQLAlchemy, специфического native-пакета или сложного connection lifecycle, beta-режим нужно проверить на staging. То же относится к системам с длинными транзакциями и большим числом одновременно открытых соединений.

Hyperdrive не заменяет нормальную схему БД: индексы, медленные запросы, транзакции и блокировки всё равно остаются ответственностью приложения и базы.

Чек-лист перед запуском

  • обновить compatibility_date минимум до 2026-09-08;
  • добавить Hyperdrive binding в Wrangler;
  • начать с рекомендованного asyncpg или aiomysql;
  • проверить SELECT и write-запросы отдельно;
  • проверить параллельные запросы и повторное использование соединений;
  • не переносить database credentials в исходный код Worker;
  • сравнить latency до и после Hyperdrive;
  • нагрузочно протестировать staging до production.

Связь с другими возможностями Workers

Python Workers постепенно становятся полноценнее как backend-среда: рядом доступны bindings к R2, D1, KV, Durable Objects, Queues, Workflows и другим сервисам. Hyperdrive закрывает отдельный сценарий — когда данные уже живут в обычной PostgreSQL/MySQL и переносить их не хочется.

Если проект использует Workers как интеграционный слой, полезно также учитывать изменения runtime и модулей. Я отдельно разбирал обновление module registry в Cloudflare Workers.

Официальные источники

Если нужно собрать serverless API или интеграционный слой вокруг существующего сайта, CRM и базы, можно обсудить автоматизацию или прислать текущую схему проекта. Сначала имеет смысл определить источники данных, нагрузку и требования к отказоустойчивости, а уже потом выбирать Workers, Hyperdrive или обычный сервер.

Следующий шаг

Нужно решить похожую задачу?

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

Обсудить задачу

Источники

Обсуждение

Вопросы и комментарии

Можно уточнить детали статьи или поделиться своим опытом. Первый комментарий проходит проверку.

Оставить комментарий

Email не публикуется. Ссылки и HTML в тексте удаляются.

Мы используем приватную аналитику SlimStat, чтобы понимать, какие страницы полезны посетителям, и улучшать сайт. IP-адреса анонимизируются и хэшируются. Вы можете согласиться или отказаться от аналитики.
Cookies и конфиденциальность

Используем необходимые cookies, аналитику и данные форм, чтобы сайт работал корректно и заявки доходили.