LINUX.ORG.RU

История изменений

Исправление ei-grad, (текущая версия) :

Quack-quack! Дока - хеллоуворлдное говно, да. Чтоб разобраться «канал - это p2p или разные субканалы могут подключаться к разным конечным нодам» - надо лезть в исходники C++ реализации (если юзается питонячая дефолтная). Можно довериться интуиции что gRPC это HTTP2, и target это URL (но про ньюансы всё равно придется закапываться глубоко в исходники и настройки системы/окружения).

В целом есть простой ответ на вопрос «Как правильно». Правильно - так, как правильно в твоем случае, и иди разбирайся чо там внутри.

держать в статической переменной, или threadlocal

в общем случае - лучше нет, но раз у тебя flask - то пофиг, оберни инициализацию/teardown как принято во flask

какие у канала есть опции и как их предполагается использовать?

в каких-то местах доки вообще есть ссылки на .h файлы которые уже сто раз были переписаны и того на что дока ссылается там давно нет (но можно пойти в исходники v1.0.0 и посмотреть, может оно хотя бы тогда там было)

выход - смотреть реализацию в C++ (и попробовать поискать константы где-то рядом с python/cython-кодом, но не факт что эти опции там вообще есть)

как корректно сделать retry?

практически целиком зависит от логики твоего приложения, если всё идемпотентно - можно добавить сахара завернув в удобное молодежное tenacity

как правильно передать кастомную ошибку и какой код при этом юзать?

тут вроде более менее, есть пример https://github.com/grpc/grpc/blob/master/examples/python/errors/server.py

код юзать тот который тебе надо, в этом месте правильно так, как документировано у вас во внутренней доке

distributed tracing

grpc-opentracing само вроде должно всё менеджить, или нет?

как черт возьми корректно распространять протобуфную спеку?

git submodule, генерить в целевой репе при обновлении сабмодуля

Исправление ei-grad, :

Quack-quack! Дока - хеллоуворлдное говно, да. Чтоб разобраться «канал - это p2p или разные субканалы могут подключаться к разным конечным нодам» - надо лезть в исходники C++ реализации (если юзается питонячая дефолтная). Можно довериться интуиции что gRPC это HTTP2, и target это URL (но про ньюансы всё равно придется закапываться глубоко).

В целом есть простой ответ на вопрос «Как правильно». Правильно - так, как правильно в твоем случае, и иди разбирайся чо там внутри.

держать в статической переменной, или threadlocal

в общем случае - лучше нет, но раз у тебя flask - то пофиг, оберни инициализацию/teardown как принято во flask

какие у канала есть опции и как их предполагается использовать?

в каких-то местах доки вообще есть ссылки на .h файлы которые уже сто раз были переписаны и того на что дока ссылается там давно нет (но можно пойти в исходники v1.0.0 и посмотреть, может оно хотя бы тогда там было)

выход - смотреть реализацию в C++ (и попробовать поискать константы где-то рядом с python/cython-кодом, но не факт что эти опции там вообще есть)

как корректно сделать retry?

практически целиком зависит от логики твоего приложения, если всё идемпотентно - можно добавить сахара завернув в удобное молодежное tenacity

как правильно передать кастомную ошибку и какой код при этом юзать?

тут вроде более менее, есть пример https://github.com/grpc/grpc/blob/master/examples/python/errors/server.py

код юзать тот который тебе надо, в этом месте правильно так, как документировано у вас во внутренней доке

distributed tracing

grpc-opentracing само вроде должно всё менеджить, или нет?

как черт возьми корректно распространять протобуфную спеку?

git submodule, генерить в целевой репе при обновлении сабмодуля

Исправление ei-grad, :

Quack-quack! Дока - хеллоуворлдное говно, да. Чтоб разобраться «канал - это p2p или разные субканалы могут подключаться к разным конечным нодам» - надо лезть в исходники C++ реализации (если юзается питонячая дефолтная). Можно довериться интуиции что gRPC это HTTP2, и target это URL.

В целом есть простой ответ на вопрос «Как правильно». Правильно - так, как правильно в твоем случае, и иди разбирайся чо там внутри.

держать в статической переменной, или threadlocal

в общем случае - лучше нет, но раз у тебя flask - то пофиг, оберни инициализацию/teardown как принято во flask

какие у канала есть опции и как их предполагается использовать?

в каких-то местах доки вообще есть ссылки на .h файлы которые уже сто раз были переписаны и того на что дока ссылается там давно нет (но можно пойти в исходники v1.0.0 и посмотреть, может оно хотя бы тогда там было)

выход - смотреть реализацию в C++ (и попробовать поискать константы где-то рядом с python/cython-кодом, но не факт что эти опции там вообще есть)

как корректно сделать retry?

практически целиком зависит от логики твоего приложения, если всё идемпотентно - можно добавить сахара завернув в удобное молодежное tenacity

как правильно передать кастомную ошибку и какой код при этом юзать?

тут вроде более менее, есть пример https://github.com/grpc/grpc/blob/master/examples/python/errors/server.py

код юзать тот который тебе надо, в этом месте правильно так, как документировано у вас во внутренней доке

distributed tracing

grpc-opentracing само вроде должно всё менеджить, или нет?

как черт возьми корректно распространять протобуфную спеку?

git submodule, генерить в целевой репе при обновлении сабмодуля

Исправление ei-grad, :

Quack-quack! Дока - хеллоуворлдное говно, да. Чтоб разобраться «канал - это p2p или разные субканалы могут подключаться к разным конечным нодам» - надо лезть в исходники C++ реализации (если юзается питонячая дефолтная). Но в целом твоей интуиции может помочь то что gRPC это HTTP2, и target это URL.

В целом есть простой ответ на вопрос «Как правильно». Правильно - так, как правильно в твоем случае, и иди разбирайся чо там внутри.

держать в статической переменной, или threadlocal

в общем случае - лучше нет, но раз у тебя flask - то пофиг, оберни инициализацию/teardown как принято во flask

какие у канала есть опции и как их предполагается использовать?

в каких-то местах доки вообще есть ссылки на .h файлы которые уже сто раз были переписаны и того на что дока ссылается там давно нет (но можно пойти в исходники v1.0.0 и посмотреть, может оно хотя бы тогда там было)

выход - смотреть реализацию в C++ (и попробовать поискать константы где-то рядом с python/cython-кодом, но не факт что эти опции там вообще есть)

как корректно сделать retry?

практически целиком зависит от логики твоего приложения, если всё идемпотентно - можно добавить сахара завернув в удобное молодежное tenacity

как правильно передать кастомную ошибку и какой код при этом юзать?

тут вроде более менее, есть пример https://github.com/grpc/grpc/blob/master/examples/python/errors/server.py

код юзать тот который тебе надо, в этом месте правильно так, как документировано у вас во внутренней доке

distributed tracing

grpc-opentracing само вроде должно всё менеджить, или нет?

как черт возьми корректно распространять протобуфную спеку?

git submodule, генерить в целевой репе при обновлении сабмодуля

Исходная версия ei-grad, :

Quack-quack! Дока - хеллоуворлдное говно, да. Чтоб разобраться «канал - это p2p или разные субканалы могут подключаться к разным конечным нодам» - надо лезть в исходники C++ реализации (если юзается питонячая дефолтная).

В целом есть простой ответ на вопрос «Как правильно». Правильно - так, как правильно в твоем случае, и иди разбирайся чо там внутри.

держать в статической переменной, или threadlocal

в общем случае - лучше нет, но раз у тебя flask - то пофиг, оберни инициализацию/teardown как принято во flask

какие у канала есть опции и как их предполагается использовать?

в каких-то местах доки вообще есть ссылки на .h файлы которые уже сто раз были переписаны и того на что дока ссылается там давно нет (но можно пойти в исходники v1.0.0 и посмотреть, может оно хотя бы тогда там было)

выход - смотреть реализацию в C++ (и попробовать поискать константы где-то рядом с python/cython-кодом, но не факт что эти опции там вообще есть)

как корректно сделать retry?

практически целиком зависит от логики твоего приложения, если всё идемпотентно - можно добавить сахара завернув в удобное молодежное tenacity

как правильно передать кастомную ошибку и какой код при этом юзать?

тут вроде более менее, есть пример https://github.com/grpc/grpc/blob/master/examples/python/errors/server.py

код юзать тот который тебе надо, в этом месте правильно так, как документировано у вас во внутренней доке

distributed tracing

grpc-opentracing само вроде должно всё менеджить, или нет?

как черт возьми корректно распространять протобуфную спеку?

git submodule, генерить в целевой репе при обновлении сабмодуля