{ "info": { "author": "\u00c9tienne BERSAC", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# dramatiq-pg \u2212 Postgres Broker for Dramatiq\n\n[Dramatiq](https://dramatiq.io/) is a simple task queue implementation for\nPython3. dramatiq-pg provides a Postgres-based implementation of a dramatiq\nbroker.\n\n## Features\n\n- Super simple deployment.\n- Uses plain psycopg2. No ORM.\n- Stores message payload and results as native JSONb.\n- Stores all messages in a single table, in a dedicated schema.\n- Uses LISTEN/NOTIFY to keep worker sync. No polling.\n- Requeue of failed tasks.\n- Delayed task.\n- Reliable thanks to Postgres MVCC.\n- Self-healing. Old messages are purge from time to time.\n- Utility CLI for maintainance\u00a0: flush, purge, stats, etc.\n\nNote that dramatiq assumes tasks are idempotent. This broker makes the same\nassumptions for recovering after a crash.\n\n\n## Installation\n\n- Install dramatiq-pg package from PyPI:\n ``` console\n $ pip install dramatiq-pg psycopg2-binary\n ```\n Ensure you have either psycopg2 or psycopg2-binary installed.\n- Apply dramatiq\\_pg/schema.sql file in your database:\n ``` console\n $ psql -f dramatiq_pg/schema.sql\n ```\n- Before importing actors, define global broker with a connection\n pool:\n ``` python\n import dramatiq\n import psycopg2.pool\n from dramatiq_pg import PostgresBroker\n\n dramatiq.set_broker(PostgresBroker(i))\n\n @dramatiq.actor\n def myactor():\n ...\n ```\n\nNow declare/import actors and manage worker just like any [dramatiq\nsetup](https://dramatiq.io/guide.html). An [example\nscript](https://gitlab.com/dalibo/dramatiq-pg/blob/master/example.py) is\navailable, tested on CI.\n\nThe CLI tool `dramatiq-pg` allows you to requeue messages, purge old messages\nand show stats on the queue. See `--help` for details.\n\n[Dramatiq-pg\ndocumentation](https://gitlab.com/dalibo/dramatiq-pg/blob/master/docs/index.rst)\nis hosted on GitLab and give you more details on deployment and operation of\nPostgres as a Dramatiq broker.\n\n\n## Support\n\nIf you encounter a bug or miss a feature, please [open an issue on\nGitLab](https://gitlab.com/dalibo/dramatiq-pg/issues/new) with as much\ninformation as possible.\n\ndramatiq_pg is available under the PostgreSQL licence.\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/dalibo/dramatiq-pg", "keywords": "postgres,task queue,dramatiq", "license": "PostgreSQL", "maintainer": "\u00c9tienne BERSAC", "maintainer_email": "", "name": "dramatiq-pg", "package_url": "https://pypi.org/project/dramatiq-pg/", "platform": "", "project_url": "https://pypi.org/project/dramatiq-pg/", "project_urls": { "Documentation": "https://gitlab.com/dalibo/dramatiq-pg/blob/master/docs/index.rst", "Homepage": "https://gitlab.com/dalibo/dramatiq-pg" }, "release_url": "https://pypi.org/project/dramatiq-pg/0.6.0/", "requires_dist": [ "dramatiq (>=1.5,<2.0)" ], "requires_python": ">=3.5,<4.0", "summary": "Postgres Broker for Dramatiq Task Queue", "version": "0.6.0" }, "last_serial": 5357422, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e9463486f2ef2e17f0f3ec45c3c6f5c2", "sha256": "c3e33ffb41d10bd56852832ee9413a849fa398f39662d57be406fa556bfaff97" }, "downloads": -1, "filename": "dramatiq_pg-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e9463486f2ef2e17f0f3ec45c3c6f5c2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 6847, "upload_time": "2019-02-19T08:43:50", "url": "https://files.pythonhosted.org/packages/ba/07/3a312de31d7d2432d59b410226c774771bfff4e8366373c29b9bbcd120f6/dramatiq_pg-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae5ada6b0e97f360f907efb279fd59bc", "sha256": "0ee2a909a10077592968a87d4f3edfd371d9fc10b0e05e4ea072f751f3f47f3a" }, "downloads": -1, "filename": "dramatiq-pg-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ae5ada6b0e97f360f907efb279fd59bc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 3500, "upload_time": "2019-02-19T08:43:47", "url": "https://files.pythonhosted.org/packages/18/3a/fca6a4ddd0d8d1460d3132abdfb72097526d601e3999ef1e6e799576790d/dramatiq-pg-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "4e3edbe81d69a0a107cb1c35e4712d74", "sha256": "e702a7abdd47eeaaffd680178acca3be348560d3fe2a8996f013cc9030d31e81" }, "downloads": -1, "filename": "dramatiq_pg-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4e3edbe81d69a0a107cb1c35e4712d74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 7884, "upload_time": "2019-02-22T08:17:24", "url": "https://files.pythonhosted.org/packages/b5/c7/44257d2b14f346be8252c1553b11556c584d948a4c17bba89f5e9ad7e39b/dramatiq_pg-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed793fcfcd2b37a5ff84f9bc11aa8657", "sha256": "1b113ab456879b366738fdb2da4e952760311f060a4a165c6e76ce84013f0df8" }, "downloads": -1, "filename": "dramatiq-pg-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ed793fcfcd2b37a5ff84f9bc11aa8657", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 3970, "upload_time": "2019-02-22T08:17:22", "url": "https://files.pythonhosted.org/packages/d6/06/4189420eb7048b72f10c89ebf881b586c020283784bf53a8f46a3f0a8299/dramatiq-pg-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a6c43aaa1b98901505b1c6e3287f79e0", "sha256": "2abbb7572170f4a7b3885a4859ef60654c58a898a71832786054c25aecb3a10f" }, "downloads": -1, "filename": "dramatiq_pg-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a6c43aaa1b98901505b1c6e3287f79e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 15896, "upload_time": "2019-03-07T10:10:39", "url": "https://files.pythonhosted.org/packages/f7/3b/b46c36893757cb69d314d8be707164cc153cdc90e2427d43a1b02b3a8699/dramatiq_pg-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61b9ef9a4dd20659dea4b60e025298e8", "sha256": "70207dd160fc63088bf5703032eecf61e1c4a7a766912962a7a6c154c0aaf18b" }, "downloads": -1, "filename": "dramatiq-pg-0.3.0.tar.gz", "has_sig": false, "md5_digest": "61b9ef9a4dd20659dea4b60e025298e8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 6801, "upload_time": "2019-03-07T10:10:37", "url": "https://files.pythonhosted.org/packages/88/55/87bc920f201600158ceae418bacfbbdebb88e413b9bd5d48c4e9910fe224/dramatiq-pg-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "f50c290d56abf9847d578f0c8485f664", "sha256": "cf111dcef7ed0cd37513880d8426d8cc870eca93bee5c6ec94cf0aa486e34e68" }, "downloads": -1, "filename": "dramatiq_pg-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f50c290d56abf9847d578f0c8485f664", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 18196, "upload_time": "2019-03-13T09:40:02", "url": "https://files.pythonhosted.org/packages/21/5b/a1f3e732f71d587fabcbe29cf85f206b879ddfbd1875ee7bcce0d31696d0/dramatiq_pg-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e0bfe3c12b1ecca903f084d436085099", "sha256": "33df173355ed6863a19d49556b146f3fc8fe376bd179ddb92db367dd26f91f0c" }, "downloads": -1, "filename": "dramatiq-pg-0.4.0.tar.gz", "has_sig": false, "md5_digest": "e0bfe3c12b1ecca903f084d436085099", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7656, "upload_time": "2019-03-13T09:40:00", "url": "https://files.pythonhosted.org/packages/51/cd/c8a24c19fc4ff4519bba4eb085de92ce2b05ce5fd61a132dccac17f3bf2b/dramatiq-pg-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "1bb77d6f3628aece43f2950a5a546570", "sha256": "1480ef89582cef9407fde65a82d7777d92ec76131e49d1dfcf8b42fd182381a1" }, "downloads": -1, "filename": "dramatiq_pg-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1bb77d6f3628aece43f2950a5a546570", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 18182, "upload_time": "2019-03-13T10:05:52", "url": "https://files.pythonhosted.org/packages/e3/fa/5d726e53d3fb83bbd35c99cce2ab4391273992593ca7dbf3e23e8d19da56/dramatiq_pg-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c524c9c48a26c323dceced4016862722", "sha256": "6232ad2c4f108b75b5589bbd848d9abca0d637a2927d336fd70cd08aca9ee9f2" }, "downloads": -1, "filename": "dramatiq-pg-0.4.1.tar.gz", "has_sig": false, "md5_digest": "c524c9c48a26c323dceced4016862722", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 7646, "upload_time": "2019-03-13T10:05:50", "url": "https://files.pythonhosted.org/packages/a4/ea/b7b28a2f6c739f9c8b151ab3206a137379b2d79e314a249ca560083c1a8b/dramatiq-pg-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "e671047ae1a3687ebabf2a8952f314ef", "sha256": "fadfcc4ba53a1b85fdba4adac078b420289ad055471e981fe9bd5b27f1123f1c" }, "downloads": -1, "filename": "dramatiq_pg-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e671047ae1a3687ebabf2a8952f314ef", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 22742, "upload_time": "2019-04-04T13:05:49", "url": "https://files.pythonhosted.org/packages/2f/d6/91306c0b218e142d4fa01e810af52e4aeef1abe56cd186bcd9601a84586e/dramatiq_pg-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70d1a1f4c574b6f15dc4665283d7a803", "sha256": "2fbae725ab4abdf225194f0dad6b83cc406b0d1a24287c2bef87e8b9152ea15e" }, "downloads": -1, "filename": "dramatiq-pg-0.5.0.tar.gz", "has_sig": false, "md5_digest": "70d1a1f4c574b6f15dc4665283d7a803", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 8961, "upload_time": "2019-04-04T13:05:47", "url": "https://files.pythonhosted.org/packages/fe/47/17daa82260956c3903c85dfc9be4f19e172c6e452ec53e38ac6bd973d4ef/dramatiq-pg-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "e5affe0bfe7924ca30ed46d49667cbb0", "sha256": "087f765488460b43cb8e70db1cd8bff5c2a97e0efa7af873af17a88485e5ed5d" }, "downloads": -1, "filename": "dramatiq_pg-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e5affe0bfe7924ca30ed46d49667cbb0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 22747, "upload_time": "2019-04-04T13:20:32", "url": "https://files.pythonhosted.org/packages/42/81/da8cf87c6c46feeaeec418d0e7b91f2e8567605a9ef3f1aa35814a511b5b/dramatiq_pg-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18ba844587c0704cc4ee3fd4e0689d13", "sha256": "d8b80417f5e85a566f9b9f021522b236991092f1e05b1715283a34713902dc58" }, "downloads": -1, "filename": "dramatiq-pg-0.5.1.tar.gz", "has_sig": false, "md5_digest": "18ba844587c0704cc4ee3fd4e0689d13", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 8966, "upload_time": "2019-04-04T13:20:30", "url": "https://files.pythonhosted.org/packages/39/d2/1195c05d59caa5379efe0f4785db6c87ec7cf4c990fd9bb4826b447fd279/dramatiq-pg-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "da76babcb893f7a002aa066b66771e75", "sha256": "b481f0be14fd0f9ceff229484d390e177725dc47ba02fe95d540ec2f57bcebf7" }, "downloads": -1, "filename": "dramatiq_pg-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "da76babcb893f7a002aa066b66771e75", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 10438, "upload_time": "2019-06-04T13:31:36", "url": "https://files.pythonhosted.org/packages/23/29/2ddef79a428bffd4cc7e79a6d1320af54326d89be2fd44864c81b26b0731/dramatiq_pg-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44006c2f1a59a49cd14673477a0d303d", "sha256": "d4dab44934749c5595e43b4be824d1e006b2e8a152789104a4e3024840adcfea" }, "downloads": -1, "filename": "dramatiq-pg-0.6.0.tar.gz", "has_sig": false, "md5_digest": "44006c2f1a59a49cd14673477a0d303d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 9220, "upload_time": "2019-06-04T13:31:34", "url": "https://files.pythonhosted.org/packages/64/ae/b9cbd4e0e5001ab9e012eafe9b6f6d6e8fb7f08179c5adf03eb2ae66c497/dramatiq-pg-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "da76babcb893f7a002aa066b66771e75", "sha256": "b481f0be14fd0f9ceff229484d390e177725dc47ba02fe95d540ec2f57bcebf7" }, "downloads": -1, "filename": "dramatiq_pg-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "da76babcb893f7a002aa066b66771e75", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<4.0", "size": 10438, "upload_time": "2019-06-04T13:31:36", "url": "https://files.pythonhosted.org/packages/23/29/2ddef79a428bffd4cc7e79a6d1320af54326d89be2fd44864c81b26b0731/dramatiq_pg-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44006c2f1a59a49cd14673477a0d303d", "sha256": "d4dab44934749c5595e43b4be824d1e006b2e8a152789104a4e3024840adcfea" }, "downloads": -1, "filename": "dramatiq-pg-0.6.0.tar.gz", "has_sig": false, "md5_digest": "44006c2f1a59a49cd14673477a0d303d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<4.0", "size": 9220, "upload_time": "2019-06-04T13:31:34", "url": "https://files.pythonhosted.org/packages/64/ae/b9cbd4e0e5001ab9e012eafe9b6f6d6e8fb7f08179c5adf03eb2ae66c497/dramatiq-pg-0.6.0.tar.gz" } ] }