Honker : les queues Postgres arrivent enfin sur SQLite
Pourquoi ça compte pour toi
Si tu construis une application avec SQLite et que tu as besoin de queues fiables ou de flux d'événements, tu devais jusqu'à présent ajouter Postgres ou Kafka. Honker te le permet en pur SQLite, sans infrastructure complexe. C'est particulièrement utile pour les créateurs qui veulent rester simples mais ne peuvent pas sacrifier la fiabilité des transactions.
Ce qu'il faut retenir
- 1.Met en œuvre le patron transactional outbox (les jobs ne sont mis en file que si la transaction est validée)
- 2.API Python simple : enqueue/claim/ack pour les queues, publish/subscribe pour les flux
- 3.Surveillance ultra-rapide du fichier .db-wal (1ms) pour du quasi temps réel sans requête SQL coûteuse
- 4.20+ fonctions SQL personnalisées pour notifier, lire des flux, etc.
Pourquoi Honker change la donne pour SQLite
Jusqu'à présent, si tu voulais des queues transactionnelles ou des flux 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 :
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 mis en file que si ta transaction est validée (transactional outbox pattern).
Pour les flux façon Kafka :
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 des performances : Honker surveille le fichier WAL (~1ms) via un appel stat, pas une requête SQL. Tu approches du temps réel 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 surdimensionné 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 :