{"slug": "procrastinate", "name": "Procrastinate", "category": "productivity", "category_name": "Productivity", "description": "", "recommenders": 4, "commenters": 5, "warners": 0, "score": 3.529, "rising": -1.31, "first": "2025-11-28", "latest": "2026-03-10", "why": "I use Django with Procrastinate which uses Postgres for the task backend. Took a while to find the right Django setup, but it works like a dream.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 1, "compare": 0, "warn": 0}, "spark": [3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "I use Django with Procrastinate which uses Postgres for the task backend. Took a while to find the right Django setup, but it works like a dream.", "kind": "", "icon": false, "domain": null, "github_repo": null, "official_url": "https://procrastinate.readthedocs.io", "pricing": "", "aliases": ["Procrastinate"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 757281200, "item_id": 47330075, "url": "https://news.ycombinator.com/item?id=47330075", "by": "mmarian", "date": "2026-03-10", "stance": "recommend", "quote": "I use Django with Procrastinate which uses Postgres for the task backend. Took a while to find the right Django setup, but it works like a dream.", "excerpt": "What if it takes a long time to process the callback? Some servers don't handle this well by default and you have to customise to make it work. I use Django with Procrastinate which uses Postgres for the task backend. Took a while to find the right Django setup, but it works like a dream.", "context": "", "use_case": "background jobs", "switched_from": "", "story": "Ask HN: Do you still run Redis and workers just for background jobs?"}, {"id": 737379168, "item_id": 46086198, "url": "https://news.ycombinator.com/item?id=46086198", "by": "ducdetronquito", "date": "2025-11-29", "stance": "recommend", "quote": "I also warmly recommend procrastinate !", "excerpt": "I also warmly recommend procrastinate ! We moved all our celery tasks to procrastinate at work for all our django backends since almost two years now and it has been great. Having tasks deferred in the same transaction as the business logic stuff is something that helped us a lot to improve consistency and debugability. Moreover, it's so nice to able to inspect what's going on by just querying our database or just lo", "context": "Team runs Django backends at work", "use_case": "Django task queue", "switched_from": "Celery", "story": "A first look at Django's new background tasks"}, {"id": 737360033, "item_id": 46085002, "url": "https://news.ycombinator.com/item?id=46085002", "by": "TkTech", "date": "2025-11-28", "stance": "recommend", "quote": "but they're still sufficient to run millions upon millions of tasks per day even on a $14/month VPS", "excerpt": "(I'm biased, I'm the author of Chancy) One of the major complaints with Celery is observability. Databased-backed options like Procastinate and Chancy will never reach the potential peak throughput of Celery+RabbitMQ, but they're still sufficient to run millions upon millions of tasks per day even on a $14/month VPS. The tradeoff to this is excellent insight into what's going on - all state lives in the database, you", "context": "", "use_case": "DB-backed task queue", "switched_from": "", "story": "A first look at Django's new background tasks"}, {"id": 737355424, "item_id": 46084714, "url": "https://news.ycombinator.com/item?id=46084714", "by": "TkTech", "date": "2025-11-28", "stance": "recommend", "quote": "If you like Procastinate", "excerpt": "If you like Procastinate, you might like my Chancy, which is also built on postgres but with a goal of the most common bells and whistles being included. Rate limiting, global uniqueness, timeouts, memory limits, mix asyncio/processes/threads/sub-interpreters in the same worker, workflows, cron jobs, dashboard, metrics, django integrations, repriotization, triggers, pruning, Windows support, queue tagging (ex: run th", "context": "", "use_case": "Postgres-backed task queue", "switched_from": "", "story": "A first look at Django's new background tasks"}, {"id": 737353840, "item_id": 46084615, "url": "https://news.ycombinator.com/item?id=46084615", "by": "JakaJancar", "date": "2025-11-28", "stance": "recommend", "quote": "I've used Procrastinate and it's great", "excerpt": "Assuming you're fine with keeping the queue in postgres, I've used Procrastinate and it's great: https://procrastinate.readthedocs.io/en/stable/index.html Core is not Django-specific, but it has an optional integration. Sync and async, retries/cancellation/etc., very extensible, and IMO super clean architecture and well tested. IIRC think the codebase is like one-tenth that of Celery.", "context": "", "use_case": "Postgres task queue for Python", "switched_from": "", "story": "A first look at Django's new background tasks"}]}], "caveats": [], "who": [{"by": "ducdetronquito", "context": "Team runs Django backends at work", "url": "https://news.ycombinator.com/item?id=46086198", "date": "2025-11-29"}], "tags": [], "use_cases": ["background jobs", "background tasks", "django task queue", "db-backed task queue", "postgres-backed task queue", "postgres task queue for python"], "compared": [{"slug": "celery", "name": "Celery", "co": 4, "switched_from": 1, "switched_to": 0}, {"slug": "django", "name": "Django", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "postgresql", "name": "PostgreSQL", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46083051", "title": "A first look at Django's new background tasks", "mentions": 5}, {"url": "https://news.ycombinator.com/item?id=47320768", "title": "Ask HN: Do you still run Redis and workers just for background jobs?", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 3, "neutral": 1}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 757281200, "item_id": 47330075, "url": "https://news.ycombinator.com/item?id=47330075", "by": "mmarian", "date": "2026-03-10", "stance": "recommend", "quote": "I use Django with Procrastinate which uses Postgres for the task backend. Took a while to find the right Django setup, but it works like a dream.", "excerpt": "What if it takes a long time to process the callback? Some servers don't handle this well by default and you have to customise to make it work. I use Django with Procrastinate which uses Postgres for the task backend. Took a while to find the right Django setup, but it works like a dream.", "context": "", "use_case": "background jobs", "switched_from": "", "story": "Ask HN: Do you still run Redis and workers just for background jobs?"}, {"id": 737402258, "item_id": 46087641, "url": "https://news.ycombinator.com/item?id=46087641", "by": "delbronski", "date": "2025-11-29", "stance": "neutral", "quote": "I\u2019ve tried Celery/Procrastinate/Chancy and others in the past. Nothing has really felt \u201cright.\u201d", "excerpt": "I\u2019ve tried Celery/Procrastinate/Chancy and others in the past. Nothing has really felt \u201cright.\u201d So I always end up using GCPs cloud task jobs and scheduling. It\u2019s just so simple for small to mid size projects. Really want to give this a try though.", "context": "", "use_case": "background tasks", "switched_from": "", "story": "A first look at Django's new background tasks"}, {"id": 737379168, "item_id": 46086198, "url": "https://news.ycombinator.com/item?id=46086198", "by": "ducdetronquito", "date": "2025-11-29", "stance": "recommend", "quote": "I also warmly recommend procrastinate !", "excerpt": "I also warmly recommend procrastinate ! We moved all our celery tasks to procrastinate at work for all our django backends since almost two years now and it has been great. Having tasks deferred in the same transaction as the business logic stuff is something that helped us a lot to improve consistency and debugability. Moreover, it's so nice to able to inspect what's going on by just querying our database or just lo", "context": "Team runs Django backends at work", "use_case": "Django task queue", "switched_from": "Celery", "story": "A first look at Django's new background tasks"}, {"id": 737360033, "item_id": 46085002, "url": "https://news.ycombinator.com/item?id=46085002", "by": "TkTech", "date": "2025-11-28", "stance": "recommend", "quote": "but they're still sufficient to run millions upon millions of tasks per day even on a $14/month VPS", "excerpt": "(I'm biased, I'm the author of Chancy) One of the major complaints with Celery is observability. Databased-backed options like Procastinate and Chancy will never reach the potential peak throughput of Celery+RabbitMQ, but they're still sufficient to run millions upon millions of tasks per day even on a $14/month VPS. The tradeoff to this is excellent insight into what's going on - all state lives in the database, you", "context": "", "use_case": "DB-backed task queue", "switched_from": "", "story": "A first look at Django's new background tasks"}, {"id": 737355424, "item_id": 46084714, "url": "https://news.ycombinator.com/item?id=46084714", "by": "TkTech", "date": "2025-11-28", "stance": "recommend", "quote": "If you like Procastinate", "excerpt": "If you like Procastinate, you might like my Chancy, which is also built on postgres but with a goal of the most common bells and whistles being included. Rate limiting, global uniqueness, timeouts, memory limits, mix asyncio/processes/threads/sub-interpreters in the same worker, workflows, cron jobs, dashboard, metrics, django integrations, repriotization, triggers, pruning, Windows support, queue tagging (ex: run th", "context": "", "use_case": "Postgres-backed task queue", "switched_from": "", "story": "A first look at Django's new background tasks"}, {"id": 737353840, "item_id": 46084615, "url": "https://news.ycombinator.com/item?id=46084615", "by": "JakaJancar", "date": "2025-11-28", "stance": "recommend", "quote": "I've used Procrastinate and it's great", "excerpt": "Assuming you're fine with keeping the queue in postgres, I've used Procrastinate and it's great: https://procrastinate.readthedocs.io/en/stable/index.html Core is not Django-specific, but it has an optional integration. Sync and async, retries/cancellation/etc., very extensible, and IMO super clean architecture and well tested. IIRC think the codebase is like one-tenth that of Celery.", "context": "", "use_case": "Postgres task queue for Python", "switched_from": "", "story": "A first look at Django's new background tasks"}]}