{ "info": { "author": "Jay Johnson", "author_email": "jay.p.h.johnson@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Examples for Celery Applications and Task Loading\n=================================================\n\nThis is an example for running Celery applications that demonstrates how to load multiple task modules from different files using environment variables. It also shows how to utilize a ``get celery config`` approach that allows for decoupling inclusion of tasks from the initialization of the Celery application. It also includes a derived Celery task called ``CustomTask`` for showing how to handle ``on_success`` and ``on_failure`` task control events. I find this easier to manage my Celery workers and the applications that publish tasks to them.\n\nThis is not an official Celery project, it is just examples I use to test my workers and tasks.\n\nI hope you find it valuable.\n\nInstall\n-------\n\n::\n\n pip install celery-loaders\n\nStart Redis\n-----------\n\nThis is only needed if redis is not running already on port 6739. It also requires having docker and docker-compose available to your user.\n\n::\n\n ./run-redis.sh\n\nStart Celery Worker\n-------------------\n\nPlease run this from the base repository directory or the module paths to the Celery tasks will fail.\n\n::\n\n ./run-celery-loaders-worker.sh \n Starting Worker=celery_worker\n celery worker -A celery_worker -c 1 -l INFO -n default@%h\n 2018-02-24 13:01:49,843 - worker - INFO - start - worker\n 2018-02-24 13:01:49,843 - worker - INFO - broker=redis://localhost:6379/9 backend=redis://localhost:6379/10 include_tasks=['celery_loaders.work_tasks.tasks', 'celery_loaders.work_tasks.always_fails_tasks']\n 2018-02-24 13:01:49,844 - get_celery_app - INFO - creating celery app=worker tasks=['celery_loaders.work_tasks.tasks', 'celery_loaders.work_tasks.always_fails_tasks']\n 2018-02-24 13:01:49,845 - worker - INFO - starting celery\n\n -------------- default@dev v4.1.0 (latentcall)\n ---- **** ----- \n --- * *** * -- Linux-4.13.0-16-generic-x86_64-with-Ubuntu-17.10-artful 2018-02-24 13:01:49\n -- * - **** --- \n - ** ---------- [config]\n - ** ---------- .> app: worker:0x7f384346e550\n - ** ---------- .> transport: redis://localhost:6379/9\n - ** ---------- .> results: redis://localhost:6379/10\n - *** --- * --- .> concurrency: 1 (prefork)\n -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)\n --- ***** ----- \n -------------- [queues]\n .> celery exchange=celery(direct) key=celery\n\n\n [tasks]\n . celery_loaders.work_tasks.always_fails_tasks.always_fails\n . celery_loaders.work_tasks.tasks.do_some_work\n\n 2018-02-24 13:01:49,956 - celery.worker.consumer.connection - INFO - Connected to redis://localhost:6379/9\n 2018-02-24 13:01:49,963 - celery.worker.consumer.mingle - INFO - mingle: searching for neighbors\n 2018-02-24 13:01:50,981 - celery.worker.consumer.mingle - INFO - mingle: all alone\n 2018-02-24 13:01:51,013 - celery.apps.worker - INFO - default@dev ready.\n\nRun Success and Failure Tests\n-----------------------------\n\nRun this in another terminal with the ``celery_loaders`` pip available to the python 3 runtime.\n\n::\n\n ./run-celery-loaders-tests.py \n 2018-02-24 13:01:56,768 - worker - INFO - start - worker\n 2018-02-24 13:01:56,768 - worker - INFO - broker=redis://localhost:6379/9 backend=redis://localhost:6379/10 include_tasks=['celery_loaders.work_tasks.tasks', 'celery_loaders.work_tasks.always_fails_tasks']\n 2018-02-24 13:01:56,768 - worker - INFO - broker=redis://localhost:6379/9 backend=redis://localhost:6379/10\n 2018-02-24 13:01:56,769 - get_celery_app - INFO - creating celery app=worker tasks=['celery_loaders.work_tasks.tasks', 'celery_loaders.work_tasks.always_fails_tasks']\n 2018-02-24 13:01:56,781 - worker - INFO - calling task - success testing\n 2018-02-24 13:01:56,822 - worker - INFO - calling task=celery_loaders.work_tasks.tasks.do_some_work - success job_id=3dcd5066-46fe-43cc-b0c6-8cff5499a7b1\n 2018-02-24 13:01:56,822 - worker - INFO - calling task - failure testing\n 2018-02-24 13:01:56,823 - worker - INFO - calling task=celery_loaders.work_tasks.always_fails_tasks.always_fails - failure job_id=c6f91e65-f541-40ad-9226-eaf97b223723\n 2018-02-24 13:01:56,823 - worker - INFO - end - worker\n\nConfirm the Celery Worker Processed the Tasks\n---------------------------------------------\n\n::\n\n 2018-02-24 13:01:56,822 - celery.worker.strategy - INFO - Received task: celery_loaders.work_tasks.tasks.do_some_work[3dcd5066-46fe-43cc-b0c6-8cff5499a7b1] \n 2018-02-24 13:01:56,824 - tasks - INFO - task - do_some_work - start work_dict={'user_id': 1}\n 2018-02-24 13:01:56,824 - tasks - INFO - task - do_some_work - done\n 2018-02-24 13:01:56,828 - custom_task - INFO - custom_task SUCCESS - retval=True task_id=3dcd5066-46fe-43cc-b0c6-8cff5499a7b1 args=[{'user_id': 1}] kwargs={}\n 2018-02-24 13:01:56,828 - celery.app.trace - INFO - Task celery_loaders.work_tasks.tasks.do_some_work[3dcd5066-46fe-43cc-b0c6-8cff5499a7b1] succeeded in 0.004043873999762582s: True\n 2018-02-24 13:01:57,007 - celery.worker.strategy - INFO - Received task: celery_loaders.work_tasks.always_fails_tasks.always_fails[c6f91e65-f541-40ad-9226-eaf97b223723] \n 2018-02-24 13:01:57,009 - always_fails_tasks - INFO - task - always_fails - start work_dict={'test_failure': 'Should fail now 2018-02-24T13:01:56.781481'}\n 2018-02-24 13:01:57,010 - custom_task - ERROR - custom_task FAIL - exc=Should fail now 2018-02-24T13:01:56.781481 args=[{'test_failure': 'Should fail now 2018-02-24T13:01:56.781481'}] kwargs={}\n 2018-02-24 13:01:57,010 - celery.app.trace - ERROR - Task celery_loaders.work_tasks.always_fails_tasks.always_fails[c6f91e65-f541-40ad-9226-eaf97b223723] raised unexpected: Exception('Should fail now 2018-02-24T13:01:56.781481',)\n Traceback (most recent call last):\n File \"/home/jay/.venvs/celeryloaders/lib/python3.6/site-packages/celery/app/trace.py\", line 374, in trace_task\n R = retval = fun(*args, **kwargs)\n File \"/home/jay/.venvs/celeryloaders/lib/python3.6/site-packages/celery/app/trace.py\", line 629, in __protected_call__\n return self.run(*args, **kwargs)\n File \"/opt/redten/stack/jwt/webapp/celery_examples/build/lib/celery_loaders/work_tasks/always_fails_tasks.py\", line 32, in always_fails\n \"simulating a failure\"))\n Exception: Should fail now 2018-02-24T13:01:56.781481\n\nDebug a Celery Task from the Command Line\n-----------------------------------------\n\n#. Start a named Celery Task and pass in data from a file containing a testing JSON payload\n\n ::\n\n ./run-celery-task.py -f tests/data/user_lookup_test.json -t celery_loaders.work_tasks.tasks.do_some_work -w 5.0\n 2018-02-26 00:11:50,192 - run-celery-task - INFO - start - run-celery-task\n 2018-02-26 00:11:50,192 - run-celery-task - INFO - connecting Celery=run-celery-task broker=redis://localhost:6379/9 backend=redis://localhost:6379/10 tasks=['celery_loaders.work_tasks.tasks']\n 2018-02-26 00:11:50,192 - get_celery_app - INFO - creating celery app=run-celery-task tasks=['celery_loaders.work_tasks.tasks']\n 2018-02-26 00:11:50,207 - run-celery-task - INFO - app.broker_url=redis://localhost:6379/9 calling task=celery_loaders.work_tasks.tasks.do_some_work data={'user_id': 1}\n 2018-02-26 00:11:50,264 - run-celery-task - INFO - calling task=celery_loaders.work_tasks.tasks.do_some_work - started job_id=561c80bc-0bab-4387-a842-4372d11c8291\n 2018-02-26 00:11:50,264 - run-celery-task - INFO - task=561c80bc-0bab-4387-a842-4372d11c8291 - waiting seconds=5.0 for results\n 2018-02-26 00:11:50,268 - run-celery-task - INFO - task=celery_loaders.work_tasks.tasks.do_some_work - success job_id=561c80bc-0bab-4387-a842-4372d11c8291 task_result={'job_results': 'some response key=c60adfdc-e27c-41f4-8440-666be599ab4a'}\n 2018-02-26 00:11:50,268 - run-celery-task - INFO - end - run-celery-task\n\n#. Verify the Worker Processed the Task\n\n ::\n\n 2018-02-26 00:11:50,265 - celery.worker.strategy - INFO - Received task: celery_loaders.work_tasks.tasks.do_some_work[561c80bc-0bab-4387-a842-4372d11c8291] \n 2018-02-26 00:11:50,266 - tasks - INFO - task - do_some_work - start work_dict={'user_id': 1}\n 2018-02-26 00:11:50,266 - tasks - INFO - task - {'job_results': 'some response key=c60adfdc-e27c-41f4-8440-666be599ab4a'} - result=do_some_work done\n 2018-02-26 00:11:50,267 - custom_task - INFO - custom_task SUCCESS - retval={'job_results': 'some response key=c60adfdc-e27c-41f4-8440-666be599ab4a'} task_id=561c80bc-0bab-4387-a842-4372d11c8291 args=[{'user_id': 1}] kwargs={}\n 2018-02-26 00:11:50,268 - celery.app.trace - INFO - Task celery_loaders.work_tasks.tasks.do_some_work[561c80bc-0bab-4387-a842-4372d11c8291] succeeded in 0.001375271000142675s: {'job_results': 'some response key=c60adfdc-e27c-41f4-8440-666be599ab4a'}\n\nDevelopment\n-----------\n\n::\n\n virtualenv -p python3 ~/.venvs/celeryloaders && source ~/.venvs/celeryloaders/bin/activate && pip install -e .\n\nRun tests\n\n::\n\n python setup.py test \n\nLinting\n-------\n\n::\n\n flake8 .\n pycodestyle .\n\nLicense\n=======\n\nApache 2.0\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jay-johnson/celery-loaders", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "celery-loaders", "package_url": "https://pypi.org/project/celery-loaders/", "platform": "", "project_url": "https://pypi.org/project/celery-loaders/", "project_urls": { "Homepage": "https://github.com/jay-johnson/celery-loaders" }, "release_url": "https://pypi.org/project/celery-loaders/1.0.8/", "requires_dist": [ "celery (>=4.1.0)", "colorlog", "coverage", "flake8 (>=3.4.1)", "future", "kombu (>=4.1.0)", "mock", "pep8 (>=1.7.1)", "pylint", "redis", "spylunking", "unittest2" ], "requires_python": "", "summary": "Celery Application and Task Loader Examples", "version": "1.0.8" }, "last_serial": 4445910, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "e71e23cca6d11e5547e751cc1060fef6", "sha256": "c65d5dbb913fdcd76a060c572a614e09532d313a2dd33f95439f8164f336ce3d" }, "downloads": -1, "filename": "celery_loaders-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e71e23cca6d11e5547e751cc1060fef6", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 18425, "upload_time": "2018-02-24T21:21:43", "url": "https://files.pythonhosted.org/packages/59/9d/609b9093f7815b4e9268aedf7d866e701d0a50ab649cf11816beba5340cf/celery_loaders-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "723866fc6f0405befd27b22117bfb474", "sha256": "55cb2d93ff063fd514ac6f795cca96a802b60ae5843e59a12a6656de6e1f808a" }, "downloads": -1, "filename": "celery-loaders-1.0.0.tar.gz", "has_sig": false, "md5_digest": "723866fc6f0405befd27b22117bfb474", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7080, "upload_time": "2018-02-24T21:21:42", "url": "https://files.pythonhosted.org/packages/a8/d0/51d27c7e3a5bdf9ed8ad41cda53f84f448f63e8764afc61a16bdf48bc141/celery-loaders-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "f79cc65d2a0827c0f838abbbab855c84", "sha256": "b5f251881b332b250ad9088659920269b0634745edd0dd9a1676d9a8e99aa165" }, "downloads": -1, "filename": "celery_loaders-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f79cc65d2a0827c0f838abbbab855c84", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 18424, "upload_time": "2018-02-24T21:23:38", "url": "https://files.pythonhosted.org/packages/a9/cc/926ed9823a24deded568434fecbd6a6b7187feab02431e2be043affa8402/celery_loaders-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "05fe119e3fed7355746d6ad00b30ebec", "sha256": "54a9d47fd92c389edf02ff14222726442fe772a51dbb22c1f170045b50c96017" }, "downloads": -1, "filename": "celery-loaders-1.0.1.tar.gz", "has_sig": false, "md5_digest": "05fe119e3fed7355746d6ad00b30ebec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7415, "upload_time": "2018-02-24T21:23:37", "url": "https://files.pythonhosted.org/packages/10/5e/7a3770d07151e1055d3531bf278d7716ccbaf31d56f012c94cc4c7e168d6/celery-loaders-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "c05b12a853f3cb537f252840d00123ff", "sha256": "214f269b24600b5933a95540e42e3f7d26cb8886f4636c483a886cc762c39255" }, "downloads": -1, "filename": "celery_loaders-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c05b12a853f3cb537f252840d00123ff", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 18425, "upload_time": "2018-02-24T21:27:19", "url": "https://files.pythonhosted.org/packages/b4/8b/145d7b7ac3b0ebc62f57e82f1c68f88f6865969d8bed187a501926f9ccb0/celery_loaders-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc73b0596e2b85855e0440192eae1c7b", "sha256": "8ab4d05b69e15d911dac4fbe8a4f2395013865700d831daad6eabb6420116c3d" }, "downloads": -1, "filename": "celery-loaders-1.0.2.tar.gz", "has_sig": false, "md5_digest": "cc73b0596e2b85855e0440192eae1c7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7429, "upload_time": "2018-02-24T21:27:17", "url": "https://files.pythonhosted.org/packages/8c/1e/3da783eeb02e68f1d60e10c9bad373ff015bb4ca5a1119bf252303b7645f/celery-loaders-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "51a5fe4b8dacde864d07d361e13464ad", "sha256": "d25aa4b6a8a6960ffdd9fac0528ab6e80bbbf9517433100cbd5e3bdac2b6b85d" }, "downloads": -1, "filename": "celery_loaders-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "51a5fe4b8dacde864d07d361e13464ad", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9931, "upload_time": "2018-02-24T22:47:57", "url": "https://files.pythonhosted.org/packages/66/2e/a13a712dfecdb70631944edb51c2938730db6965a992b6e0d14f88005d6e/celery_loaders-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b464b4d306e71dc95ef94a79c1746e1b", "sha256": "977c86002ff62800cb1bdca8d1ba9ffb7af53e973b93e00a9682f37a0156090c" }, "downloads": -1, "filename": "celery-loaders-1.0.3.tar.gz", "has_sig": false, "md5_digest": "b464b4d306e71dc95ef94a79c1746e1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6560, "upload_time": "2018-02-24T22:47:54", "url": "https://files.pythonhosted.org/packages/a0/38/9b1e3e28d7941e136c39edc72d1419ced77bdce5840e3b4078a0340d417c/celery-loaders-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "f8c8ccaffb0fc0515224167e975c3a33", "sha256": "283406239e6b9bc0c63d54c9849ad871930c6744f13ee75274f998be2b28a9fe" }, "downloads": -1, "filename": "celery_loaders-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f8c8ccaffb0fc0515224167e975c3a33", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 19834, "upload_time": "2018-02-26T08:18:51", "url": "https://files.pythonhosted.org/packages/94/12/96f08326f6e0422eb13550211bc7132c64c9d417b559f92309c835439e68/celery_loaders-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "997663531e031099a271d6fe8e110a9f", "sha256": "b2cbfa459948e5ed28b746eaf42673d891a4c8c50ee28435ad0a99412a1dc205" }, "downloads": -1, "filename": "celery-loaders-1.0.4.tar.gz", "has_sig": false, "md5_digest": "997663531e031099a271d6fe8e110a9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8712, "upload_time": "2018-02-26T08:18:49", "url": "https://files.pythonhosted.org/packages/75/e0/af43ea3d036672d1f37c1037b4d9aabb528670210f1a048be32e8d7c0524/celery-loaders-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "916b979d4de4fc11fef8c4961ce7c136", "sha256": "875b21e9fcfeee31e66567450786514a0a304c730bdb4e04b267ba8150442dc4" }, "downloads": -1, "filename": "celery_loaders-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "916b979d4de4fc11fef8c4961ce7c136", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9648, "upload_time": "2018-06-13T04:33:47", "url": "https://files.pythonhosted.org/packages/2e/6a/29b90a37d0e51f96781a01ee6c6092c551008373b8d8f2aaa3803822efaf/celery_loaders-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c48e51ad427892f393b0539dd72a3297", "sha256": "a92b222bf71742ea9051608a5c2eac9a80a73222bb104fb2a1ce2291b3d39bea" }, "downloads": -1, "filename": "celery-loaders-1.0.5.tar.gz", "has_sig": false, "md5_digest": "c48e51ad427892f393b0539dd72a3297", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7732, "upload_time": "2018-06-13T04:33:46", "url": "https://files.pythonhosted.org/packages/e5/30/e9f1c517e7c0ac353a9af7343f15549891a32597dfa05d26f4f87d8b1c3f/celery-loaders-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "5a8a48237f91d758c0de6ccb9eb13d80", "sha256": "ab81396b45f31b322ebd124ca226880e5b265136f31b020a58698b8116b20b67" }, "downloads": -1, "filename": "celery_loaders-1.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5a8a48237f91d758c0de6ccb9eb13d80", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 16756, "upload_time": "2018-06-26T06:54:04", "url": "https://files.pythonhosted.org/packages/ed/fc/39f32d653de7b084f2059d06599cdb9721f291aa673cae3c64762f5e0863/celery_loaders-1.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "158f0800eb3f5a0a7d55bc6fe0817412", "sha256": "977fd10433ed44fa537cf59d17b76f319383c9e880aadbebef80082edd44dfaf" }, "downloads": -1, "filename": "celery-loaders-1.0.6.tar.gz", "has_sig": false, "md5_digest": "158f0800eb3f5a0a7d55bc6fe0817412", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7831, "upload_time": "2018-06-26T06:54:02", "url": "https://files.pythonhosted.org/packages/13/d8/7257a86963df2b3b9841b5d954debc2473e770d979c3b000fa5080f49153/celery-loaders-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "11a76476a0d5efa6683a1dde6b468f61", "sha256": "dac0d2321881ae2eaf2ed647d4c2c5b4ee30ed2da5f826fba4773640e05cc58f" }, "downloads": -1, "filename": "celery_loaders-1.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11a76476a0d5efa6683a1dde6b468f61", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 23750, "upload_time": "2018-07-01T08:12:10", "url": "https://files.pythonhosted.org/packages/19/22/77c21b10f2ced2c6dd98030ab397f858d405e5ba53d3ed734c310ef15a65/celery_loaders-1.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf1459a8b556f318ded2e2ae94ccef62", "sha256": "f496d3674acda7e3d40766105e3ceabd32399dce82cfe501e1a131c7df64a20e" }, "downloads": -1, "filename": "celery-loaders-1.0.7.tar.gz", "has_sig": false, "md5_digest": "cf1459a8b556f318ded2e2ae94ccef62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7801, "upload_time": "2018-07-01T08:12:08", "url": "https://files.pythonhosted.org/packages/be/9d/d6cfe83d3da125b5e2e518fb1a380fb786c30893157a6876c11a55059f80/celery-loaders-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "ef38d3b5aa2b0fbd14217f46b4d929d5", "sha256": "d631fbec13fcc3f53315c8273383a278c7e8196e323604fec090cba8c75e65ba" }, "downloads": -1, "filename": "celery_loaders-1.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ef38d3b5aa2b0fbd14217f46b4d929d5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15175, "upload_time": "2018-11-02T19:53:24", "url": "https://files.pythonhosted.org/packages/e7/cc/f79e48dfd78a3680d1f0ca65276078c440851632930f0649d7b0e8b7bc92/celery_loaders-1.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fc7b898628c6bf2d53882f0c57cd041", "sha256": "11519b71f7abf6d4503b0638db59710666042d3d26635a3158d9af3c4403704a" }, "downloads": -1, "filename": "celery-loaders-1.0.8.tar.gz", "has_sig": false, "md5_digest": "4fc7b898628c6bf2d53882f0c57cd041", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8765, "upload_time": "2018-11-02T19:53:25", "url": "https://files.pythonhosted.org/packages/6d/9b/f72f7628e5518ddb00b10ddd7b324fc75f93c396d13a431c3ab5f2e5ce11/celery-loaders-1.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ef38d3b5aa2b0fbd14217f46b4d929d5", "sha256": "d631fbec13fcc3f53315c8273383a278c7e8196e323604fec090cba8c75e65ba" }, "downloads": -1, "filename": "celery_loaders-1.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ef38d3b5aa2b0fbd14217f46b4d929d5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15175, "upload_time": "2018-11-02T19:53:24", "url": "https://files.pythonhosted.org/packages/e7/cc/f79e48dfd78a3680d1f0ca65276078c440851632930f0649d7b0e8b7bc92/celery_loaders-1.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fc7b898628c6bf2d53882f0c57cd041", "sha256": "11519b71f7abf6d4503b0638db59710666042d3d26635a3158d9af3c4403704a" }, "downloads": -1, "filename": "celery-loaders-1.0.8.tar.gz", "has_sig": false, "md5_digest": "4fc7b898628c6bf2d53882f0c57cd041", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8765, "upload_time": "2018-11-02T19:53:25", "url": "https://files.pythonhosted.org/packages/6d/9b/f72f7628e5518ddb00b10ddd7b324fc75f93c396d13a431c3ab5f2e5ce11/celery-loaders-1.0.8.tar.gz" } ] }