{ "info": { "author": "Anton Bobrov", "author_email": "baverman@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Internet", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Distributed Computing", "Topic :: System :: Monitoring", "Topic :: System :: Systems Administration" ], "description": "DSQ\n===\n\n.. image:: https://travis-ci.org/baverman/dsq.svg?branch=master\n :target: https://travis-ci.org/baverman/dsq\n\n.. image:: https://readthedocs.org/projects/dsq/badge/?version=latest\n :target: http://dsq.readthedocs.io/en/latest/?badge=latest\n\nDead simple task queue using redis.\n\n.. code:: python\n\n # tasks.py\n import dsq\n manager = dsq.create_manager()\n\n @manager.task(queue='normal')\n def add(a, b):\n print a + b\n\n if __name__ == '__main__':\n add.push(1, 2)\n\n.. code:: bash\n\n $ python tasks.py\n $ dsq worker -bt tasks normal\n\nSee full `DSQ documentation `_.\n\n\nFeatures\n--------\n\n* Low latency.\n* Expiring tasks (TTL).\n* Delayed tasks (ETA).\n* Retries (forever or particular amount).\n* Periodic tasks.\n* Crontab.\n* Dead letters.\n* Queue priorities.\n* Worker lifetime.\n* Task execution timeout.\n* Task forwarder from one redis instance to another.\n* HTTP interface.\n* Inspect tools.\n* Supports 2.7, 3.4, 3.5, 3.6 and PyPy.\n* 100% test coverage.\n\n\nThe goal is a simple design. There is no worker manager, one can use\nsupervisord/circus/whatever to spawn N workers.\nSimple storage model. Queue is a list and scheduled tasks are a sorted set.\nThere are no task keys. Tasks are items of list and sorted set. There is no\nany registry to manage workers, basic requirements\n(die after some lifetime and do not hang) can be handled by workers themselves.\nWorker do not store result by default.\n\n\nQueue overhead benchmarks\n-------------------------\n\nDSQ has a little overhead in compare with RQ and Celery\n(https://gist.github.com/baverman/5303506cd89200cf246af7bafd569b2e)\n\nPushing and processing 10k trivial add tasks::\n\n === DSQ ===\n Push\n real\t0m0.906s\n user\t0m0.790s\n sys \t0m0.107s\n\n Process\n real\t0m1.949s\n user\t0m0.763s\n sys\t 0m0.103s\n\n\n === RQ ===\n Push\n real\t0m3.617s\n user\t0m3.177s\n sys \t0m0.293s\n\n Process\n real\t0m57.706s\n user\t0m29.807s\n sys\t 0m20.070s\n\n\n === Celery ===\n Push\n real\t0m5.753s\n user\t0m5.237s\n sys\t 0m0.327s\n", "description_content_type": null, "docs_url": "https://pythonhosted.org/dsq/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/baverman/dsq/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dsq", "package_url": "https://pypi.org/project/dsq/", "platform": "any", "project_url": "https://pypi.org/project/dsq/", "project_urls": { "Homepage": "https://github.com/baverman/dsq/" }, "release_url": "https://pypi.org/project/dsq/0.7/", "requires_dist": null, "requires_python": "", "summary": "Dead simple task queue using redis", "version": "0.7" }, "last_serial": 3068257, "releases": { "0.6": [ { "comment_text": "", "digests": { "md5": "fe155c4b68da3c301ae30e6da1fcef2b", "sha256": "403119fb38ee6b8a8ce9601143b52cb79b3eedc196f2dad54963e0e4ba702b2d" }, "downloads": -1, "filename": "dsq-0.6.tar.gz", "has_sig": false, "md5_digest": "fe155c4b68da3c301ae30e6da1fcef2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11382, "upload_time": "2016-07-17T12:25:32", "url": "https://files.pythonhosted.org/packages/6f/a6/0938d92180f0ae8b150956fe877cf2b932f4fe163a745f959b179e60df80/dsq-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "4113fb1c394200f23d379155093c19fd", "sha256": "069457f0c2e21faabbc82c1c76dc6f7f97bf39601c16585662a90ce4183e9055" }, "downloads": -1, "filename": "dsq-0.7.tar.gz", "has_sig": false, "md5_digest": "4113fb1c394200f23d379155093c19fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13452, "upload_time": "2017-08-02T21:11:08", "url": "https://files.pythonhosted.org/packages/8a/b9/b3bb5131225e5b2cd5d8ff8bc60d247e96a8fe34b0b3d396ae87e545070e/dsq-0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4113fb1c394200f23d379155093c19fd", "sha256": "069457f0c2e21faabbc82c1c76dc6f7f97bf39601c16585662a90ce4183e9055" }, "downloads": -1, "filename": "dsq-0.7.tar.gz", "has_sig": false, "md5_digest": "4113fb1c394200f23d379155093c19fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13452, "upload_time": "2017-08-02T21:11:08", "url": "https://files.pythonhosted.org/packages/8a/b9/b3bb5131225e5b2cd5d8ff8bc60d247e96a8fe34b0b3d396ae87e545070e/dsq-0.7.tar.gz" } ] }