We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

gRPC Python, C Extensions, and AsyncIO

Formal Metadata

Title
gRPC Python, C Extensions, and AsyncIO
Subtitle
How to make AsyncIO work with the gRPC Core
Title of Series
Number of Parts
130
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Goal - Encourage Python developers to understand C extensions by sharing gRPC Python’s practice, and advocate the adoption of AsyncIO. Prerequisite - Understand thread vs. process; - Interested in asynchronous programming. gRPC Brief - What’s gRPC Core? And what is gRPC Python? Cython To The Rescue - Why we picked Cython among all other available tools (e.g., pybind11, ctypes) - Debuggability: pdb & gdb The GIL Friction - How to delegate work to C extension - How to make multithreading work AsyncIO Topic - Not blocking the loop, the main headache. - Non-blocking I/O solution 1: replacing C libraries’ I/O operations - Non-blocking I/O solution 2: dedicated background poller thread - Performance improvement (10k -> 20k for client, 4k -> 16k for server) Migration to AsyncIO - Tolerate multithreading and AsyncIO in the same application - Make both API co-existable in the same application