{ "info": { "author": "Severin B\u00fchler", "author_email": "severin.buehler@apgsga.ch", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 2.1", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "# hueyx\n\n[![PyPI version](https://badge.fury.io/py/hueyx.svg)](https://badge.fury.io/py/hueyx)\n\nA django extension to run huey with multiple queues.\nMultiple queues allow tasks to not block each other and to scale independently.\nOnly the redis storage is supported.\n\n---\n##### Important\n\n- If you use `huey 1.x` then install `hueyx 0.1.2`. Checkout the git tag [huey1.x](https://github.com/APGSGA/hueyx/tree/huey1.x).\n- If you use `huey 2.x` then install `hueyx >= 1.0`.\n\n---\n\n### Usage\n\nInstall it with\n```bash\npip install hueyx\n```\n\nAdd hueyx in your installed apps.\n\n```python\nINSTALLED_APPS = [\n 'django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'hueyx',\n]\n```\n\n\n\n##### settings.py\n\nCompared to djhuey, hueyx allows several queues to be defined in the settings.py. \n\n```python\nHUEYX = {\n 'queue_name1': {\n 'connection': {\n 'host': 'localhost',\n 'port': 6379,\n 'db': 0,\n },\n 'consumer': {\n 'workers': 1,\n 'worker_type': 'process',\n }\n },\n 'queue_name2': {\n 'connection': {\n 'connection_pool': ConnectionPool(host='localhost', port=6379, db=1)\n },\n 'consumer': {\n 'multiple_scheduler_locking': True,\n 'prometheus_metrics': True,\n 'workers': 2,\n 'worker_type': 'thread',\n }\n },\n}\n```\n\nThe settings are almost the same as in djhuey.\nHave a look at the [huey documentation](https://huey.readthedocs.io/en/latest/contrib.html#setting-things-up) \nto see the exact parameter usage.\n\nExceptions:\n- You can only configure redis as storage engine.\n- The `name` and `backend_class` parameters are not supported.\n- The options `multiple_scheduler_locking` and `prometheus_metrics_enabled` have been added. See below.\n- The parameters `heartbeat_timeout` for `db_task` has been added. See below.\n\n##### tasks.py\n\n```python\nfrom hueyx.queues import hueyx\n\n\"\"\"\nDefine which queue you want to use.\nThey are predefined in settings.py.\n\"\"\"\nHUEY_Q1 = hueyx('queue_name1')\nHUEY_Q2 = hueyx('queue_name2')\n\n\n@HUEY_Q1.task()\ndef my_task1():\n print('my_task1 called')\n\n@HUEY_Q1.db_task()\ndef my_db_task1():\n print('my_db_task1 called')\n\n@HUEY_Q2.task()\ndef my_task2():\n print('my_task2 called')\n\n@HUEY_Q2.periodic_task(crontab(minute='0', hour='3'))\ndef my_periodic_task2():\n print('my_periodic_task2 called')\n return 1\n\n@HUEY_Q2.db_task(heartbeat_timeout=120)\ndef my_heartbeat_task(heartbeat: Heartbeat):\n with heartbeat.long_running_operation():\n print('This operation can take a while -> don\\'t check for heartbeats')\n print('Now we check for heartbeats -> call heartbeat() periodically')\n heartbeat()\n```\n\n##### Push task to queue\n```python\nfrom example.tasks import my_task1, my_db_task1, my_task2\n\n\nmy_task1() # Task for queue_name1\nmy_db_task1() # Task for queue_name1\nmy_task2() # Task for queue_name2\n```\n\n##### Run consumer\nConsumers are started with the queue_name.\n```bash\n./manage.py run_hueyx queue_name1\n```\n\n##### Heartbeat tasks\nHeartbeat tasks are tasks with the parameter `heartbeat_timeout`. It defines the timeout in seconds. \nThey get a Heartbeat object which needs to be called in order to send a heartbeat to redis. \nIf no heartbeat occurs in set timeout the task is presumed to be dead and will automatically get restarted. \n`heartbeat_timeout` needs to be at least 120 seconds. It does not work together with the parameter `include_task`.\n\n### Additional settings\n\n##### multiple_scheduler_locking\n`multiple_scheduler_locking` has been added to support multiple huey schedulers.\nIf you run huey in a cloud environment, you will end up running multiple huey instances which each will\nschedule the periodic task.\n`multiple_scheduler_locking` prevents periodic tasks to be scheduled multiple times. It is false by default.\n\n\n### Huey signals\n\nOptionally hueyx pushes all huey signals to the redis pubsub `hueyx.huey2.signaling` if enabled.\n```python\nHUEYX_SIGNALS = {\n 'enabled': True,\n 'environment': 'your environment'\n}\n```\n\nThe format of the message is\n```python\n{\n 'environment': settings.HUEYX_ENVIRONMENT,\n 'queue': queue,\n 'pid': pid,\n 'signal': signal_name,\n 'task': task_name\n}\n``` \nThe environment parameter is a optional variable.\n\n\n##### Prometheus\nThe [huey-exporter](https://github.com/APGSGA/huey-exporter) project takes the signals und reports it to prometheus.\n\n\n### Collaborators\n\n- [Update hueyx on PyPi](documentation/update_version.md)\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Sebubu/hueyx", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "hueyx", "package_url": "https://pypi.org/project/hueyx/", "platform": "", "project_url": "https://pypi.org/project/hueyx/", "project_urls": { "Homepage": "https://github.com/Sebubu/hueyx" }, "release_url": "https://pypi.org/project/hueyx/1.0.0/", "requires_dist": [ "cached-property", "huey", "redis", "python-redis-lock" ], "requires_python": "", "summary": "Django huey extension which supports multiple huey queues.", "version": "1.0.0" }, "last_serial": 5634068, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6862410a897c4ccecd99b868938348be", "sha256": "3785f1fc0e366891f1adfe22a6c436fc5b05b5073193f2c346e77ee5f1aee7f4" }, "downloads": -1, "filename": "hueyx-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6862410a897c4ccecd99b868938348be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10172, "upload_time": "2018-12-05T14:44:34", "url": "https://files.pythonhosted.org/packages/31/f7/6cbcb79ce0a4145d9b7737f78179a6e5a32c539000f2ec6923594ac98866/hueyx-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c1be23ef0f36b2de381e02e35cfbb5d2", "sha256": "1fd2995c287f638e242e85fd1a73b86fcbc7df7638612a27c92537825e2ef41e" }, "downloads": -1, "filename": "hueyx-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c1be23ef0f36b2de381e02e35cfbb5d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6212, "upload_time": "2018-12-05T14:44:36", "url": "https://files.pythonhosted.org/packages/cb/c6/5d0b49760889265fcecedc3accc5be6496e911cf54ffb7ebbe5914e94a31/hueyx-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "6ed61c71d0ff1b2352700ee4843ace05", "sha256": "2221ac1a9a8baa378eea9de786d35b9bf6d3ee569b9202cacb4b10bafa6070a8" }, "downloads": -1, "filename": "hueyx-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6ed61c71d0ff1b2352700ee4843ace05", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10217, "upload_time": "2018-12-05T15:08:02", "url": "https://files.pythonhosted.org/packages/7f/f8/d52ba6b20b9fe7ffbc3ac8cc337cd912daba587b37ea0f05c6a7c0f7e86c/hueyx-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa867583b6706f8c926d9a7015974737", "sha256": "ffb33417cb437f2fb3d203755e4a30067f88b6bafaf814ccd3ca60c45cf9a385" }, "downloads": -1, "filename": "hueyx-0.0.2.tar.gz", "has_sig": false, "md5_digest": "fa867583b6706f8c926d9a7015974737", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6237, "upload_time": "2018-12-05T15:08:04", "url": "https://files.pythonhosted.org/packages/08/ed/19f7f43dfcdca071b16ed6c91371545079ce0bfd66b8ae23339d10b41961/hueyx-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "8644f563a22b6f31d15b6d944e815cb9", "sha256": "dd6e102281b71e54c006e78322c8396f13303284f6ed6e5253e0d2c2c6ebf830" }, "downloads": -1, "filename": "hueyx-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8644f563a22b6f31d15b6d944e815cb9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11647, "upload_time": "2018-12-05T16:09:58", "url": "https://files.pythonhosted.org/packages/87/89/3899b1509b76dc6141cacd2bc8b6aba98008621d2afb6ec642a4b0773711/hueyx-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c1a0fdd1762f06cb7f569eb9fcd9d2e", "sha256": "186760925d8ceafb6513f3eb260b7373f1541170a8ebd880ef9d632db0768d3b" }, "downloads": -1, "filename": "hueyx-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3c1a0fdd1762f06cb7f569eb9fcd9d2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6616, "upload_time": "2018-12-05T16:10:01", "url": "https://files.pythonhosted.org/packages/1e/b4/a408ca884f016f678d5de50152cafbeb14c2093ffb3169345492193ee401/hueyx-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "822ac901eee1582854100085b445b96d", "sha256": "2cc5e1503b011488f3f1cf5531069cc3f278f1e22ad75afbd9d479699bd1edcf" }, "downloads": -1, "filename": "hueyx-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "822ac901eee1582854100085b445b96d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13406, "upload_time": "2018-12-07T10:40:13", "url": "https://files.pythonhosted.org/packages/0f/d8/758971340905c31684663f2e8e9a210a7242d456a7d629d965df656eef66/hueyx-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8d5e1fc6fbeb36df4d5c9b040ae913e", "sha256": "be5d08eb42ffd3b8f9b87bf3dc56ca6afd11792cff836c6150b5c81d24bb7ac3" }, "downloads": -1, "filename": "hueyx-0.0.4.tar.gz", "has_sig": false, "md5_digest": "f8d5e1fc6fbeb36df4d5c9b040ae913e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8882, "upload_time": "2018-12-07T10:40:14", "url": "https://files.pythonhosted.org/packages/af/fd/2e92f0dcaa950b9759528c328d333bc4d5fd30c3cb1a8bfc47c8ff70c33e/hueyx-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "0050ceb284a67a2590c95045919cdd18", "sha256": "70f410232cb2c75b5cc296187b1bbaa6a3de36220f48bc4f26b686850af5cfa7" }, "downloads": -1, "filename": "hueyx-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "0050ceb284a67a2590c95045919cdd18", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12615, "upload_time": "2018-12-07T12:42:34", "url": "https://files.pythonhosted.org/packages/c8/04/341c2f6b2b3671cab999ab5a38ac55018d358b7574665a367317c787ef71/hueyx-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58219f4dbbc16c6172f1b7246ec337d1", "sha256": "cbea944496e6e083765053a1f766398c6cda0db51283af9d59b93ccad7327f42" }, "downloads": -1, "filename": "hueyx-0.0.5.tar.gz", "has_sig": false, "md5_digest": "58219f4dbbc16c6172f1b7246ec337d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8982, "upload_time": "2018-12-07T12:42:35", "url": "https://files.pythonhosted.org/packages/75/48/151df7cb73fc61447cdeb57990f026c0a13a6bfc8beecfaa67c98ccf4ade/hueyx-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "5a8f63f5d98c1b51a38de89cab26053c", "sha256": "edfb32c7e6703f91d4e31364f64d2293a1e05e876befe453f09e9cb27b95d1e9" }, "downloads": -1, "filename": "hueyx-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5a8f63f5d98c1b51a38de89cab26053c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12908, "upload_time": "2018-12-28T07:38:21", "url": "https://files.pythonhosted.org/packages/f2/ba/f85c3bbdfe21adf576a2c1a1e1dd3826bbdf940b0a8fc8b6bd63524c9859/hueyx-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb759cef357992096aff406b667cf13d", "sha256": "ba40944b59cb60b4977136216887572904879b034976e7c1454be1fab2006306" }, "downloads": -1, "filename": "hueyx-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fb759cef357992096aff406b667cf13d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9320, "upload_time": "2018-12-28T07:38:23", "url": "https://files.pythonhosted.org/packages/c4/ba/53a2b260bc8d5fa7c7233f048ae806c7c051d4181b74416394918d4a6c0d/hueyx-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "80d11778b9ce92c3c1fb8f0dfa0ed26d", "sha256": "b921a158a12123369fe5605b0dffa2ecbca77d3d73953616609027f5eecbc644" }, "downloads": -1, "filename": "hueyx-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "80d11778b9ce92c3c1fb8f0dfa0ed26d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12932, "upload_time": "2018-12-28T08:47:01", "url": "https://files.pythonhosted.org/packages/0a/81/4138733cc766c154f4a34972252afc1bb5c4fdb86d70a2e6d2d5207b6975/hueyx-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5213a7320693949a65e618cce356ce18", "sha256": "1ac60ce76dc43bc6a5d08473eb4ccf7d8f04c926bc4bc5f956c98ab8d8cd988c" }, "downloads": -1, "filename": "hueyx-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5213a7320693949a65e618cce356ce18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9319, "upload_time": "2018-12-28T08:47:02", "url": "https://files.pythonhosted.org/packages/23/22/6aa4db2ea2abe0696c4b775358c0f7ac36934092801a8a335797c358c20c/hueyx-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "5a371f7c85966b9ee2dc5b94df40e4d4", "sha256": "276f6fad6610782db33317eeaf8d534faf1551617c0c3bde3497c98fa8ceae26" }, "downloads": -1, "filename": "hueyx-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5a371f7c85966b9ee2dc5b94df40e4d4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16322, "upload_time": "2019-04-24T13:17:56", "url": "https://files.pythonhosted.org/packages/d8/fa/930ccb63aa14ecb9e29fb857d5b965e0507d3be2441056ab0fc4f56688fc/hueyx-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "09b4432196ea28d57e68faa0440ff2df", "sha256": "1b591e3b8f698a279d7c3b5364301f982d475e8fccdaa4291e76491d4948eb02" }, "downloads": -1, "filename": "hueyx-0.1.2.tar.gz", "has_sig": false, "md5_digest": "09b4432196ea28d57e68faa0440ff2df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11687, "upload_time": "2019-04-24T13:17:58", "url": "https://files.pythonhosted.org/packages/d2/dd/1cacbd341eae3f492bcf05e0522a64e338ac67b00e529db755d137659355/hueyx-0.1.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "45fa589dc9de0e4b917bcf91c7c12414", "sha256": "ab916d7d931ff7d23a40def489fa658541e344577513c9dca06dfed047f1d597" }, "downloads": -1, "filename": "hueyx-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "45fa589dc9de0e4b917bcf91c7c12414", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17146, "upload_time": "2019-08-05T09:16:52", "url": "https://files.pythonhosted.org/packages/b0/69/e98edeb338a2e7b0b031a5984038a9a78e226ed5f02dd31d88778026e1e6/hueyx-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e056f7974acad707d9c6ed8cf4744e30", "sha256": "1d78fe5676ec565de16fec541a0453548c1ada280de0f7c9f96d58757349c650" }, "downloads": -1, "filename": "hueyx-1.0.0.tar.gz", "has_sig": false, "md5_digest": "e056f7974acad707d9c6ed8cf4744e30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12480, "upload_time": "2019-08-05T09:16:53", "url": "https://files.pythonhosted.org/packages/87/0b/682437113d325362d853f11f3edc92bd408bd1c77f950e174e5651c0f8be/hueyx-1.0.0.tar.gz" } ], "1.0.0.dev10": [ { "comment_text": "", "digests": { "md5": "8baabf2a12ee93387541adb9e3fecad8", "sha256": "1f86b6ea3d1cebb6d0adbad38f48a3dac9295f4936fe732dba10ca8e401c4cbf" }, "downloads": -1, "filename": "hueyx-1.0.0.dev10-py3-none-any.whl", "has_sig": false, "md5_digest": "8baabf2a12ee93387541adb9e3fecad8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17320, "upload_time": "2019-08-05T06:40:48", "url": "https://files.pythonhosted.org/packages/57/27/5808976f8709efe1321fa5543c44cccd9a56ed9b3864a4f38e71b613ca03/hueyx-1.0.0.dev10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65b52b047cf337e6cdc9a6b65e86f0da", "sha256": "dedecae253848f085bf6e000b56daf11ccb0c2b2106d2fdeaf747aeb8e4e8231" }, "downloads": -1, "filename": "hueyx-1.0.0.dev10.tar.gz", "has_sig": false, "md5_digest": "65b52b047cf337e6cdc9a6b65e86f0da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12555, "upload_time": "2019-08-05T06:40:50", "url": "https://files.pythonhosted.org/packages/0c/54/87fcc5bc7ff57742ee440470646cb76566c58232a9832d8fe6cc5a834d74/hueyx-1.0.0.dev10.tar.gz" } ], "1.0.1.dev1": [ { "comment_text": "", "digests": { "md5": "8c5b2ec3570b39d0d023211bdba98cde", "sha256": "00adc98b58c0d763fcb9e65b0546c98885b678cf7af79a24d058981705c49d5b" }, "downloads": -1, "filename": "hueyx-1.0.1.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "8c5b2ec3570b39d0d023211bdba98cde", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17172, "upload_time": "2019-08-05T12:43:42", "url": "https://files.pythonhosted.org/packages/b9/ce/ae489b0f3e5729e7128df3925c2aba31b7fcd18fe3d4b688f3d2642edf92/hueyx-1.0.1.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7c3d8cafa130c1c4f068c0380073f67", "sha256": "c65b52992aa8b07339678c4ac1735e75c178d20356a07905aa28da7d2ce1e0ca" }, "downloads": -1, "filename": "hueyx-1.0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "c7c3d8cafa130c1c4f068c0380073f67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12485, "upload_time": "2019-08-05T12:43:44", "url": "https://files.pythonhosted.org/packages/6e/f4/e8f6f5533087fe98c5f374697fb4a60564fed7972d827d2a698384ec76d8/hueyx-1.0.1.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "45fa589dc9de0e4b917bcf91c7c12414", "sha256": "ab916d7d931ff7d23a40def489fa658541e344577513c9dca06dfed047f1d597" }, "downloads": -1, "filename": "hueyx-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "45fa589dc9de0e4b917bcf91c7c12414", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17146, "upload_time": "2019-08-05T09:16:52", "url": "https://files.pythonhosted.org/packages/b0/69/e98edeb338a2e7b0b031a5984038a9a78e226ed5f02dd31d88778026e1e6/hueyx-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e056f7974acad707d9c6ed8cf4744e30", "sha256": "1d78fe5676ec565de16fec541a0453548c1ada280de0f7c9f96d58757349c650" }, "downloads": -1, "filename": "hueyx-1.0.0.tar.gz", "has_sig": false, "md5_digest": "e056f7974acad707d9c6ed8cf4744e30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12480, "upload_time": "2019-08-05T09:16:53", "url": "https://files.pythonhosted.org/packages/87/0b/682437113d325362d853f11f3edc92bd408bd1c77f950e174e5651c0f8be/hueyx-1.0.0.tar.gz" } ] }