1- From ffbb901ece5e2117ceb4a4193c5eb4728b654050 Mon Sep 17 00:00:00 2001
1+ From a1154449e1c42fb324c0c00a37c8007ab682365a Mon Sep 17 00:00:00 2001
22From: "H. Vetinari" <h.vetinari@gmx.com>
33Date: Sat, 21 Feb 2026 14:29:28 +1100
44Subject: [PATCH 17/17] break out init for grpc & abseil logging into separate
55 cython module
66
77---
8- setup.py | 3 ++-
9- src/python/grpcio/grpc/__init__.py | 3 +++
10- src/python/grpcio/grpc/_cython/cygrpc.pxd | 2 --
11- src/python/grpcio/grpc/_cython/cygrpc.pyx | 1 -
12- .../{_cygrpc/ absl.pxd.pxi => cygrpc_static_init.pxd} | 3 +++
13- .../{_cygrpc/ absl.pyx.pxi => cygrpc_static_init.pyx} | 10 ++++++++++
14- 6 files changed, 18 insertions(+), 4 deletions(-)
15- rename src/python/grpcio/grpc/_cython/{_cygrpc/absl.pxd.pxi => cygrpc_static_init.pxd} (92 %)
16- rename src/python/grpcio/grpc/_cython/{_cygrpc/absl.pyx.pxi => cygrpc_static_init.pyx} (76 %)
8+ setup.py | 3 ++-
9+ src/python/grpcio/grpc/__init__.py | 3 +++
10+ src/python/grpcio/grpc/_cython/cygrpc.pxd | 2 --
11+ src/python/grpcio/grpc/_cython/cygrpc.pyx | 1 -
12+ .../absl.pxd.pxi => cygrpc_static_init.pxd} | 4 + +++
13+ .../absl.pyx.pxi => cygrpc_static_init.pyx} | 18 ++++++++ ++++++++++
14+ 6 files changed, 27 insertions(+), 4 deletions(-)
15+ rename src/python/grpcio/grpc/_cython/{_cygrpc/absl.pxd.pxi => cygrpc_static_init.pxd} (88 %)
16+ rename src/python/grpcio/grpc/_cython/{_cygrpc/absl.pyx.pxi => cygrpc_static_init.pyx} (64 %)
1717
1818diff --git a/setup.py b/setup.py
1919index 33734daf7b..a8c58eae93 100644
@@ -76,38 +76,40 @@ index 64e7c12b9a..cb0113e574 100644
7676 include "_cygrpc/call.pyx.pxi"
7777 include "_cygrpc/channel.pyx.pxi"
7878diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/absl.pxd.pxi b/src/python/grpcio/grpc/_cython/cygrpc_static_init.pxd
79- similarity index 92 %
79+ similarity index 88 %
8080rename from src/python/grpcio/grpc/_cython/_cygrpc/absl.pxd.pxi
8181rename to src/python/grpcio/grpc/_cython/cygrpc_static_init.pxd
82- index 867d27df22..4e0c7f77f5 100644
82+ index 867d27df22..9d4c83753a 100644
8383--- a/src/python/grpcio/grpc/_cython/_cygrpc/absl.pxd.pxi
8484+++ b/src/python/grpcio/grpc/_cython/cygrpc_static_init.pxd
85- @@ -16,3 +16,6 @@
85+ @@ -16,3 +16,7 @@
8686
8787 cdef extern from "absl/log/initialize.h" namespace "absl":
8888 void InitializeLog() nogil
8989+
9090+ cdef extern from "grpc/grpc.h":
9191+ void grpc_init() nogil
92+ + void grpc_is_initialized() nogil
9293diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/absl.pyx.pxi b/src/python/grpcio/grpc/_cython/cygrpc_static_init.pyx
93- similarity index 76 %
94+ similarity index 64 %
9495rename from src/python/grpcio/grpc/_cython/_cygrpc/absl.pyx.pxi
9596rename to src/python/grpcio/grpc/_cython/cygrpc_static_init.pyx
96- index fe60e17c71..dd7e033bf5 100644
97+ index fe60e17c71..424ba8b320 100644
9798--- a/src/python/grpcio/grpc/_cython/_cygrpc/absl.pyx.pxi
9899+++ b/src/python/grpcio/grpc/_cython/cygrpc_static_init.pyx
99- @@ -12,8 +12,10 @@
100+ @@ -12,8 +12,11 @@
100101 # See the License for the specific language governing permissions and
101102 # limitations under the License.
102103
103104+ import os
105+ + import time
104106
105107 cdef bint _disable_absl_init_log = os.environ.get("GRPC_PYTHON_DISABLE_ABSL_INIT_LOG", "") in {"1", "t", "true", "y", "yes"}
106108+ cdef bint _disable_eager_grpc_init = os.environ.get("GRPC_PYTHON_DISABLE_EAGER_GRPC_INIT", "") in {"1", "t", "true", "y", "yes"}
107109
108110 #
109111 # initialize absl
110- @@ -22,4 +24,12 @@ cdef _initialize_absl():
112+ @@ -22,4 +25,19 @@ cdef _initialize_absl():
111113 if not _disable_absl_init_log:
112114 InitializeLog()
113115
@@ -117,6 +119,13 @@ index fe60e17c71..dd7e033bf5 100644
117119+ cdef _initialize_grpc():
118120+ if not _disable_eager_grpc_init:
119121+ grpc_init()
122+ + # Give ~2s to init
123+ + wait_ms = 10
124+ + while wait_ms < 1500:
125+ + if grpc_is_initialized() == 0:
126+ + return
127+ + time.sleep(wait_ms / 1000)
128+ + wait_ms = wait_ms * 2
120129+
121130 _initialize_absl()
122131+ _initialize_grpc()
0 commit comments