Pycon Sweden 2024

A challenge of converting a project's core to asyncio
2024-11-14 , Auditorium

Pyroute2 is a relatively large project with a history spanning about 10 years, primarily built around synchronous, threading-oriented code. One of the most popular and longstanding user requests has been to implement support for asynchronous parallelism. This task presents numerous challenges, ranging from continuous integration (CI) to maintaining compatibility, as the project must continue to support its existing synchronous code.


This talk will offer a brief review of both the successful decisions and the mistakes made throughout the development of our project, with the hope that others can learn from our experiences.

Agenda:

Introduction: An overview of the library  what it is, where it's used, and the reasons it initially did not employ asyncio.

Custom Event Loops: Why we tried to implement our own event loops, and why these decisions proved to be a mistake.

Transition to asyncio: Migrating to asyncio, highlighting how this transition reduced the codebase and simplified the architecture.

Maintaining Compatibility: How we maintain compatibility with the old synchronous code and address the challenges of supporting long-term stable (LTS) versions.

CI Challenges: The issues we've encountered with continuous integration (CI) both in the past and present, along with the strategies we've adopted to mitigate them.

Bonus: I’ll also touch on the decision to integrate protocol 9P as the standard inter-process communication (IPC) mechanism within the library.

I have over 15 years of experience in Python development, with a focus on network management and the Netlink protocol.