aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/python/grpcio/grpc/_cython/loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/grpcio/grpc/_cython/loader.c')
-rw-r--r--src/python/grpcio/grpc/_cython/loader.c11
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
}