art049 / art049/my-python-event-loop

Code Restructure

Offen
#3 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
15
Forks
1
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Enjoyed reading your code. It was quite comprehensive for your EuroPython 2024 talk. However, there were a few ideas that might make it more concise. This is a worthwhile project that you should pick back up. These are a few, but not all, of my quick observations. Implementing these may allow plugins for SELinux and osquery. Since coreutils is your home, these modifications could enable PyO3 stub files for an overlay over coreutils.

1. Binary search of cron schedules isnt very scalable.
- I'd use a heap or BST for these times. That way you can have horizontally distributed cron reads
- If you were to use your FastAPI lambda endpoint as a front-end for a SIEM, which isnt a bad idea, you would want to load balance this
- Might even be worth decoupling the call_at fxn

2. Passable locks associated with your handle data structure: parking-lot based queues
- Sometimes theres multiple handlers: for instance, high end TDM systems
- If you were to pass the per-thread loop context to PyO3/Rust, you may need to consider handling CFFI concurrency interrupts

3. Due to 2, _run_once should be rewritten to preempt... OnceLock and RwLocks would be seen here
- If you have a high end TDM system, you could have different loop contexts lock expensive resources and/or operations

4. Some of your code is redundant... abstract yourself of simple getters/setters
- Create a metaclass to help your trivial methods

5. Make the selector a TypedDict (inline dictionary in 3.14) or a dataclass
- _add_reader() and _add_writer() have been made inflexible
- Cut the implementation specific dependency so that events can be plugins
- This permits contextual EVENT_WRITEs...

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Das Issue nennt die Event-Loop-Einstiegspunkte call_at, _run_once, _add_reader(), _add_writer(), den Selector und Handle-Daten. Beginne damit, diese Einstiegspunkte und ihre aktuellen Beziehungen abzubilden; es werden keine Dateien oder Tests genannt. Die angeforderte Arbeit ist nicht auf eine einzelne Änderung begrenzt, und das Issue definiert kein klares Abschlusskriterium.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
fastapi, python, rust
Bereich
backend, operating-systems
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
15/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.