История изменений
Исправление 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, генерить в целевой репе при обновлении сабмодуля