Intermédiaire·2 min·24 avril 2026

Honker : les queues Postgres arrivent enfin sur SQLite

🎧 Résumé audio0:00 / 0:00
Une extension SQLite qui apporte les patrons de Postgres (NOTIFY/LISTEN) en Rust, avec des liaisons Python fluides.
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.

Newsletters Noésis

3 minutes d'IA dans ta boîte mail, chaque matin.

Rejoins les francophones qui comprennent, essaient et progressent avec l'IA. Choisis ce que tu veux recevoir. Désabonnement en 1 clic.