diff options
Diffstat (limited to 'src/python/grpcio/grpc/_cython/loader.c')
-rw-r--r-- | src/python/grpcio/grpc/_cython/loader.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/python/grpcio/grpc/_cython/loader.c b/src/python/grpcio/grpc/_cython/loader.c index 3b72806ea1..86b70dbb02 100644 --- a/src/python/grpcio/grpc/_cython/loader.c +++ b/src/python/grpcio/grpc/_cython/loader.c @@ -31,13 +31,14 @@ * */ +#include <Python.h> #include "loader.h" #ifdef __cplusplus extern "C" { #endif /* __cpluslus */ -#if GPR_WIN32 +#if GPR_WINDOWS int pygrpc_load_core(char *path) { HMODULE grpc_c; @@ -60,7 +61,13 @@ int pygrpc_load_core(char *path) { int pygrpc_load_core(char *path) { return 1; } -#endif /* !GPR_WIN32 */ +#endif /* !GPR_WINDOWS */ + +// Cython doesn't have Py_AtExit bindings, so we call the C_API directly +int pygrpc_initialize_core(void) { + grpc_init(); + return Py_AtExit(grpc_shutdown) < 0 ? 0 : 1; +} #ifdef __cplusplus } |