Honker : les queues Postgres arrivent enfin sur SQLite
Pourquoi ça compte pour toi
Si tu construis une app avec SQLite et que tu as besoin de queues fiables ou de streams d'événements, tu devais jusqu'à présent ajouter Postgres ou Kafka. Honker te le permet en pur SQLite, sans infra complexe. C'est particulièrement utile pour les créateurs qui veulent rester simple mais ne peuvent pas sacrifier la fiabilité des transactions.
Ce qu'il faut retenir
- 1.Implémente le pattern transactional outbox (les jobs ne sont enqueued que si la transaction commit)
- 2.API Python simple : enqueue/claim/ack pour les queues, publish/subscribe pour les streams
- 3.Polling ultra-rapide sur le fichier .db-wal (1ms) pour du quasi real-time sans requête SQL coûteuse
- 4.20+ fonctions SQL custom pour notifier, lire des streams, etc.
## Pourquoi Honker change la donne pour SQLite
Jusqu'à présent, si tu voulais des **queues transactionnelles** ou des **streams d'événements** en SQLite, tu devais choisir : soit rester minimal (et perdre la fiabilité), soit ajouter une dépendance externe (Postgres, Kafka, Redis).
Honker apporte une troisième voie. C'est une extension SQLite écrite en Rust qui reproduit fidèlement les sémantiques de NOTIFY/LISTEN de Postgres.
## Comment ça marche
**Pour les queues de jobs :**
```python import honker db = honker.open("app.db") emails = db.queue("emails") emails.enqueue({"to": "alice@example.com"})
# Dans un worker process async for job in emails.claim("worker-1"): send(job.payload) job.ack() ```
C'est lisible, c'est direct. Les jobs ne sont enqueued que si ta transaction commit (transactional outbox pattern).
**Pour les streams Kafka-like :**
```python stream = db.stream("user-events") with db.transaction() as tx: tx.execute("UPDATE users SET name=? WHERE id=?", [name, uid]) stream.publish({"user_id": uid, "change": "name"}, tx=tx)
async for event in stream.subscribe(consumer="dashboard"): await push_to_browser(event) ```
Le secret du performance : Honker poll le fichier WAL (~1ms) avec un appel stat, pas une requête SQL. Ça te rapproche du real-time sans la latence d'une base traditionnelle.
## Le piège à éviter
Honker nécessite le **mode WAL** (Write-Ahead Logging) de SQLite. C'est un pré-requis, pas un bug. Si tu ne sais pas ce que c'est, tu l'actives en une ligne et c'est oublié.
## Pour qui ?
Parfait pour : - Les startups qui veulent rester sur SQLite le plus longtemps possible - Les créateurs solo qui ont besoin de fiabilité sans ops complexe - Les cas où Postgres est overkill mais Redis seul ne suffit pas
Moins adapté si tu as déjà Postgres et que tu l'aimes.
Essayer maintenant
Explorer Honker sur GitHub →Source
Pour aller plus loin
Cet article t'a donné envie d'approfondir ? Deux formations Noésis t'attendent :
Tu aimes ce qu'on fait ?
Noésis vit grâce à des lecteurs comme toi. Dès 3 €, annulable 1 clic.