gisila_queue 0.1.0
gisila_queue: ^0.1.0 copied to clipboard
A Celery-like distributed task queue for Dart: register named tasks, enqueue them from anywhere with .delay()/.applyAsync(), and process them with worker pools backed by a pluggable broker (Redis or i [...]
Changelog #
Unreleased #
- Observability layer (opt-in). Producers and workers now emit lifecycle
QueueEvents to an optionalQueueEventSinkonGisilaQueue(defaults to a zero-overheadNoopEventSink):- Sinks/sources:
InMemoryEventBus(single isolate),RedisEventSink/RedisEventSource(pub/sub + capped history),MultiEventSink. - Workers report a stable id, periodic heartbeats, and per-outcome events.
- Sinks/sources:
- GisilaRose — an optional web dashboard (
package:gisila_queue/gisila_rose.dart) for live tasks, workers, and queue depths, with a JSON API and SSE live tail. Run standalone viadart run gisila_queue:rose. The analogue of Celery's Flower.
0.1.0 #
Initial release.
GisilaQueueapp with a named-task registry and typedTaskRefproducers (.delay()/.applyAsync()).- Pluggable
Broker:InMemoryBroker(single-isolate / tests) andRedisBroker(distributed, list-based queues + sorted-set ETA scheduling). - Pluggable
ResultBackend:InMemoryResultBackendandRedisResultBackend(TTL'd result keys); backend is optional for fire-and-forget use. Workerwith cooperative async concurrency, named-queue priority routing, retries with exponential backoff + jitter,ctx.retry()/RejectTask, and success/failure/retry observer hooks.AsyncResultfor polling task state and awaiting return values.Beatscheduler for periodic tasks (Schedule.every,Schedule.dailyAt).