{ "info": { "author": "Gavin Vickery", "author_email": "gavin@geekforbrains.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Django Workers\n\nA simple background task worker that uses your Django database and admin for management. This\nproject is meant for small to medium scale uses. If you need something more, check out Celery.\n\n\n## Install\n\nDownload the package\n\n```\npip install django-workers\n```\n\nand add it to your Django installed apps\n\n```python\nINSTALLED_APPS = [\n # ...\n 'workers',\n # ...\n]\n```\n\n## Basics\n\nCreate a `tasks.py` file in the Django app you'd like to have tasks in. These tasks will automatically\nbecome available thanks to autodiscovery.\n\n```python\nfrom workers import task\n\n@task()\ndef say_hello(name):\n print('Howdy', name)\n```\n\n### Calling tasks\n\nTasks become simple Python callables. Calling them inserts that task to your Django database and\nwaits for a worker to pick it up.\n\n```python\nsay_hello('Foo') # Sent to background automatically\n```\n\n### Running the workers\n\nNow boot-up your workers to crunch some data. Workers poll the Database for new tasks they should\nwork on.\n\n```\npython manage.py runworkers\n```\n\n\n## Scheduled tasks\n\nSometimes you want to run a specific task every X seconds or at a later date. Thats what scheduled \ntasks are for.\n\n### Repeating scheduled tasks\n\nTasks specified with a schedule in seconds will repeat.\n\n```python\nfrom workers import task\n\n@task(schedule=10)\ndef do_something():\n print('I run every 10 seconds')\n\n@task(schedule=60*5)\ndef do_something_later():\n print('I run every 5 minutes')\n\n@task(schedule=60*60*8)\ndef do_something_even_later():\n print('I run every 8 hours')\n```\n\n### Date scheduled tasks\n\nTasks can be scheduled to *run once* at a later date by passing a `_schedule=` argument \nwhen the task is called.\n\n```python\nfrom datetime import datetime, timedelta\nfrom workers import task\n\ntrial_end_date = datetime.utcnow() + timedelta(days=14)\n\n@task()\ndef trial_ending():\n send_email('Your trial is ending!')\n\n# Specifying the `schedule` argument will tell the worker when this task should run\ntrial_ending(_schedule=trial_end_date)\n```\n\n## Settings\n\nYou can optionally override these settings in your Django `settings.py` file:\n\n- `WORKERS_SLEEP` (default 5) - Wait in seconds before checking for tasks, if none were found\n- `WORKERS_PURGE` (default 1,000) - How many recent task logs to keep in the admin\n\n#### TODO (not working)\n- `WORKERS_TIMEOUT` (default 30) - Seconds a task can run before its killed\n- `WORKERS_RETRY` (default 3) - Number of retries before giving up\n- `WORKERS_CONCURRENCY` (default 1) - Number of worker processes to run\n\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/geekforbrains/django-workers", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-workers", "package_url": "https://pypi.org/project/django-workers/", "platform": "", "project_url": "https://pypi.org/project/django-workers/", "project_urls": { "Homepage": "https://github.com/geekforbrains/django-workers" }, "release_url": "https://pypi.org/project/django-workers/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "Simple background tasks for Django", "version": "0.2.0" }, "last_serial": 5788753, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c29082cbcd739e2195524eace4abf6c1", "sha256": "eeff35a2effd24cbcee96df202599e50fafc32bf600b906dd1fda5fffc0d8eb4" }, "downloads": -1, "filename": "django-workers-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c29082cbcd739e2195524eace4abf6c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2811, "upload_time": "2018-06-13T19:12:15", "url": "https://files.pythonhosted.org/packages/73/dc/54720d956014329d403203816768fabc33954d54b47a759129c44da0e499/django-workers-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "14715dc7f4e57751ba6fff36fbe59313", "sha256": "8d51ec902b44bcc8fc2ba3b7b719da1bec2088328d8103e190b89b1111549628" }, "downloads": -1, "filename": "django-workers-0.1.0.tar.gz", "has_sig": false, "md5_digest": "14715dc7f4e57751ba6fff36fbe59313", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4852, "upload_time": "2018-08-10T19:30:33", "url": "https://files.pythonhosted.org/packages/4e/90/82b6f0a9aa1161b4f9acb6297fee631ecb6807c9d0280e3919d7b2175969/django-workers-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b05c2da1cd6fe1efb5fc114ffa3286f3", "sha256": "7a467c00fd17536406480b2847825f34ade230c393e16359e9999736f44dfebb" }, "downloads": -1, "filename": "django-workers-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b05c2da1cd6fe1efb5fc114ffa3286f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4899, "upload_time": "2018-08-27T15:47:27", "url": "https://files.pythonhosted.org/packages/f1/c8/1c0db9045b8e5cd63ec56f38c010e4df7ec5fce6cf0843bcb9788da14a6d/django-workers-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "37516abde9aa5100c44f1e42cd62c2cc", "sha256": "05c4ce36484961c9b67f9eec4dabfec465f1d1fe70240d7f1878949e608f5e14" }, "downloads": -1, "filename": "django-workers-0.1.2.tar.gz", "has_sig": false, "md5_digest": "37516abde9aa5100c44f1e42cd62c2cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5019, "upload_time": "2018-08-27T17:12:37", "url": "https://files.pythonhosted.org/packages/1c/50/bfe268b1ce758a1556ef9aa8f4f1ee0856af846699fae2e249aee0ba3869/django-workers-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "582e8100379be4f7fa971392df7a495a", "sha256": "a7367bc1760fde703a71c67817d1946514366e90269f33411b37341f348b90e2" }, "downloads": -1, "filename": "django_workers-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "582e8100379be4f7fa971392df7a495a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8562, "upload_time": "2019-04-10T20:29:57", "url": "https://files.pythonhosted.org/packages/28/50/5bccfd353af3ad652d4cf51a509d9b27c0a877c2840f40bd9f6058d5ede2/django_workers-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0248763d3c70732faad95ce653ebe0b", "sha256": "494c3f63ad0832a0933256f49469b426e9a7308a8e358818ece03218270b68d3" }, "downloads": -1, "filename": "django-workers-0.1.3.tar.gz", "has_sig": false, "md5_digest": "c0248763d3c70732faad95ce653ebe0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5104, "upload_time": "2019-04-10T20:29:58", "url": "https://files.pythonhosted.org/packages/f3/4f/94977b610f151b0b1b63c19518790f251251fad8e98385b71c52cf5ba0c8/django-workers-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c6816f3a5968faf07ab7658a0814c537", "sha256": "72bc08a7fb7606e4f318d3e56ecbf7dde6d36a0f62d997972b08b91bf64695ab" }, "downloads": -1, "filename": "django_workers-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c6816f3a5968faf07ab7658a0814c537", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8659, "upload_time": "2019-09-05T22:25:20", "url": "https://files.pythonhosted.org/packages/a9/a4/cfb2af45e0f07206e07a94b381034c8697640ae210b410e3d77f3e09e390/django_workers-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2d7826eca52e0c07f95a0bbc012cf14", "sha256": "ef575b64a69b533c9d5b00570e38d8483b7c53a166e0adf0f46c279dcd3b006b" }, "downloads": -1, "filename": "django-workers-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e2d7826eca52e0c07f95a0bbc012cf14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5196, "upload_time": "2019-09-05T22:25:21", "url": "https://files.pythonhosted.org/packages/22/3c/b71880877ee33cea97f89ae8c6088b0bbaf9a0e05cfa3d2625abcf207d0f/django-workers-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c6816f3a5968faf07ab7658a0814c537", "sha256": "72bc08a7fb7606e4f318d3e56ecbf7dde6d36a0f62d997972b08b91bf64695ab" }, "downloads": -1, "filename": "django_workers-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c6816f3a5968faf07ab7658a0814c537", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8659, "upload_time": "2019-09-05T22:25:20", "url": "https://files.pythonhosted.org/packages/a9/a4/cfb2af45e0f07206e07a94b381034c8697640ae210b410e3d77f3e09e390/django_workers-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2d7826eca52e0c07f95a0bbc012cf14", "sha256": "ef575b64a69b533c9d5b00570e38d8483b7c53a166e0adf0f46c279dcd3b006b" }, "downloads": -1, "filename": "django-workers-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e2d7826eca52e0c07f95a0bbc012cf14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5196, "upload_time": "2019-09-05T22:25:21", "url": "https://files.pythonhosted.org/packages/22/3c/b71880877ee33cea97f89ae8c6088b0bbaf9a0e05cfa3d2625abcf207d0f/django-workers-0.2.0.tar.gz" } ] }