1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hubo1016-aiogrpc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

aiogrpc

asyncio обёртка для grpc.io. В настоящее время поддерживаются только клиентские интерфейсы.

Интерфейсы

У aiogrpc точно такой же интерфейс, как у grpc.io (https://grpc.io/grpc/python/grpc.html#module-grpc), за исключением:

— Все обратные вызовы вызываются с помощью call_soon_threadsafe(), чтобы работать в том же потоке, что и цикл обработки событий.

— Все фьючерсы являются асинхронными фьючерсами (т. е. ожидаемыми).

— Все блокирующие интерфейсы (call для унарных методов, code(), details() и т. д.) становятся сопрограммами.

— Потоковые входные и выходные данные являются асинхронными итераторами.

Использование

  1. Скомпилируйте свой прото-файл с помощью protoc, чтобы создать файлы-заглушки.
  2. Используйте файлы-заглушки с aiogrpc.Channel вместо grpc.Channel:
from aiogrpc import insecure_channel
import asyncio
from mystub import MyStub

channel = insecure_channel('ipv4:///127.0.0.1:8080')
mystub = MyStub(channel)

async def test_call():
    return await mystub.mymethod(...)

async def test_call_stream():
    async for v in mystub.my_stream_method(...):
        ...

Балансировка

Как и в оригинальном grpc.io, поддерживается балансировка (переключение при отказе) между несколькими серверами:

  1. Для балансировки используйте несколько адресов IPv4 или IPv6 — используйте цель типа: "ipv4:///1.2.3.4:9999,1.2.3.5:9999,1.2.3.6:9999" или `"ipv6:///[1::2]:9999,[1::3]:9999,[1::4]:9999".***

  2. Укажите ОДНО DNS-имя, которое разрешается в несколько адресов. GRPC будет балансировать между разрешёнными адресами и пытаться обновлять результат разрешения через интервал. Пример: `"dns:///myserver:9999"**.

Обратите внимание, что вы не можете смешивать адреса IPv4, IPv6 и DNS; можно балансировать только адреса одного типа. Кроме того, при использовании цели DNS можно указать только одно DNS-имя.

По умолчанию стратегия балансировки нагрузки — "pick_first" (переключение при отказе). Установите опцию "grpc.lb_policy_name" на "round_robin"*, чтобы использовать циклическую балансировку нагрузки: channel = insecure_channel('ipv4:///1.2.3.4:9999,1.2.3.5:9999,1.2.3.6:9999', [('grpc.lb_policy_name', 'round_robin')])`

Уведомление об авторских правах Весь код опубликован под лицензией Apache 2.0.

Некоторые фрагменты кода и строки документации были изменены по сравнению с grpc.io (https://grpc.io/grpc/python/grpc.html#module-grpc).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Асинхронный wrapper для grpc.io Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hubo1016-aiogrpc.git
git@api.gitlife.ru:oschina-mirror/hubo1016-aiogrpc.git
oschina-mirror
hubo1016-aiogrpc
hubo1016-aiogrpc
master