aiogrpc
asyncio обёртка для grpc.io. В настоящее время поддерживаются только клиентские интерфейсы.
Интерфейсы
У aiogrpc точно такой же интерфейс, как у grpc.io (https://grpc.io/grpc/python/grpc.html#module-grpc), за исключением:
— Все обратные вызовы вызываются с помощью call_soon_threadsafe(), чтобы работать в том же потоке, что и цикл обработки событий.
— Все фьючерсы являются асинхронными фьючерсами (т. е. ожидаемыми).
— Все блокирующие интерфейсы (call для унарных методов, code(), details() и т. д.) становятся сопрограммами.
— Потоковые входные и выходные данные являются асинхронными итераторами.
Использование
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, поддерживается балансировка (переключение при отказе) между несколькими серверами:
Для балансировки используйте несколько адресов 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".***
Укажите ОДНО 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 )