{ "info": { "author": "Eero Paukkonen", "author_email": "eero.paukkonen@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.8", "Framework :: Django :: 1.9", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7" ], "description": "========================\r\ndjango_celery_async_view\r\n========================\r\n\r\n.. image:: https://travis-ci.org/EeroPaukkonen/django_celery_async_view.svg?branch=master\r\n :target: https://travis-ci.org/EeroPaukkonen/django_celery_async_view\r\n\r\n.. image:: https://codecov.io/gh/EeroPaukkonen/django_celery_async_view/branch/master/graph/badge.svg\r\n :target: https://codecov.io/gh/EeroPaukkonen/django_celery_async_view\r\n\r\nAsynchronously load view or download file in django.\r\nThis is done by rendering view or creating file in celery task and polling it in javascript.\r\n\r\n-------------\r\nDocumentation\r\n-------------\r\n\r\nThe full documentation is at https://django_celery_async_view.readthedocs.io.\r\n\r\n----------\r\nQuickstart\r\n----------\r\n\r\nInstall django_celery_async_view::\r\n\r\n pip install django_celery_async_view\r\n\r\nAdd it to your `INSTALLED_APPS`:\r\n\r\n.. code-block:: python\r\n\r\n INSTALLED_APPS = (\r\n ...\r\n 'django_celery_async_view',\r\n ...\r\n )\r\n\r\nFeatures\r\n========\r\n\r\nThis package includes two separate features: AsyncView and AsyncDownload.\r\n\r\nAsyncView\r\n---------\r\nexample_app.views.py\r\n\r\n.. code-block:: python\r\n\r\n class ExampleView(AsyncDownloadView):\r\n task = example_view_task\r\n\r\nexample_app.tasks.py\r\n\r\n.. code-block:: python\r\n\r\n @shared_task\r\n def example_view_task(user_id):\r\n return AsyncViewReturnHTML().run(\r\n user_id=user_id,\r\n html_string=create_html_example(...)\r\n )\r\n\r\nexample_download_page.html\r\n\r\n.. code-block:: html\r\n\r\n \r\n \r\n \r\n \r\n\r\nAsyncDownload\r\n-------------\r\n\r\nexample_app.views.py\r\n\r\n.. code-block:: python\r\n\r\n class ExampleDownloadView(AsyncDownloadView):\r\n task = my_download_task\r\n\r\nexample_async_page.html\r\n\r\n.. code-block:: html\r\n\r\n \r\n\r\n \r\n\r\nexample_app.tasks.py\r\n\r\n.. code-block:: python\r\n\r\n @shared_task\r\n def example_download_task(*args, **kwargs):\r\n return MyDownloadCreateFile().run(*args, **kwargs)\r\n\r\n class ExampleDownloadCreateFile(AbstractAsyncDownloadCreateFile):\r\n def create_file(self, some_arg):\r\n # do stuff to create:\r\n # file_content, filename, mimetype\r\n return file_content, filename, mimetype\r\n\r\nexample_download_page.html\r\n\r\n.. code-block:: html\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\nConfigurations\r\n==============\r\n\r\nsettings.py\r\n\r\n.. code-block:: python\r\n\r\n ASYNC_VIEW_TEMP_FILE_DURATION_MS = 10 * 60 * 1000 # 10min\r\n\r\n-----------------------\r\nRunning Example Project\r\n-----------------------\r\n\r\nRequires redis.\r\nDoes not require postgres (tests require postgres)\r\n\r\n::\r\n\r\n # setup\r\n # install redis\r\n cd example\r\n virtualenv venv\r\n source venv/bin/activate\r\n pip install -r requirements.txt\r\n python manage.py migrate\r\n\r\n # run:\r\n # run redis (if not running)\r\n celery worker -A example\r\n python manage.py runserver\r\n\r\n\r\n-------------\r\nRunning Tests\r\n-------------\r\n\r\nTests are run against example project?\r\nTests require postgres and\r\n\r\n A) env var POSTGRES_PASSWORD set\r\n B) or no postgres server authentication\r\n\r\n::\r\n\r\n virtualenv venv\r\n source venv/bin/activate\r\n (myenv) $ pip install tox\r\n (myenv) $ tox\r\n\r\n-----------\r\nDevelopment\r\n-----------\r\n\r\nWhat needs to be fixed for Python3 support\r\n==========================================\r\n\r\n1) copy celerytest project and set celerytest.__init__ imports to absolute\r\n\r\n::\r\n\r\n celerytest.__init__.py:1: in \r\n from config import CELERY_TEST_CONFIG, CELERY_TEST_CONFIG_MEMORY\r\n ImportError: No module named 'config'\r\n\r\n2) AsyncResult(task_id).wait(timeout=5, interval=0.5) and possibly result.get() will break.\r\n\r\n::\r\n\r\n example\\example\\tests\\test_async_views.py:50: in phase3\r\n example_view_task.AsyncResult(task_id).wait(timeout=5, interval=0.5)\r\n\r\n if meta:\r\n self._maybe_set_cache(meta)\r\n status = meta['status']\r\n if status in PROPAGATE_STATES and propagate:\r\n > raise meta['result']\r\n E TypeError: exceptions must derive from BaseException\r\n\r\n celery\\result.py:175: TypeError\r\n\r\n\r\nCredits\r\n-------\r\n\r\nTools used in rendering this package:\r\n\r\n* Cookiecutter_\r\n* `cookiecutter-djangopackage`_\r\n\r\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\r\n.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage\r\n\r\n\r\n\r\n\r\nHistory\r\n-------\r\n\r\n0.1.0 (2017-11-14)\r\n++++++++++++++++++\r\n\r\n* First release on PyPI.\r\n\r\n\r\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/EeroPaukkonen/django_celery_async_view", "keywords": "django_celery_async_view,django,celery", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-celery-async-view", "package_url": "https://pypi.org/project/django-celery-async-view/", "platform": "", "project_url": "https://pypi.org/project/django-celery-async-view/", "project_urls": { "Homepage": "https://github.com/EeroPaukkonen/django_celery_async_view" }, "release_url": "https://pypi.org/project/django-celery-async-view/0.1.0/", "requires_dist": [ "django-db-file-storage (==0.4.3)" ], "requires_python": "", "summary": "Asynchronously load view or download file in django.", "version": "0.1.0" }, "last_serial": 3334271, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "747419e45f30f6839f962bf164f22aad", "sha256": "3e6a311409e86a5a42de73aae90c7f40f03005827a6aa1151f81414fdd0f2e1e" }, "downloads": -1, "filename": "django_celery_async_view-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "747419e45f30f6839f962bf164f22aad", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15130, "upload_time": "2017-11-15T07:07:57", "url": "https://files.pythonhosted.org/packages/4c/69/df17f06d313265c17e45e30f6a1d8e1e7857846bd71c44ffc6e8da4acec9/django_celery_async_view-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "730458af0f2d78e81cbfff897624eb23", "sha256": "a4b520dc578c97f4a830b5c68daf21192990a7b36c8c0ae2c0a73baa95be08ec" }, "downloads": -1, "filename": "django_celery_async_view-0.1.0.tar.gz", "has_sig": false, "md5_digest": "730458af0f2d78e81cbfff897624eb23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13077, "upload_time": "2017-11-15T07:07:59", "url": "https://files.pythonhosted.org/packages/00/a1/9166f7ed680176b7349cad6f7a710ee74bedf81970cc3ea611ab0994680f/django_celery_async_view-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "747419e45f30f6839f962bf164f22aad", "sha256": "3e6a311409e86a5a42de73aae90c7f40f03005827a6aa1151f81414fdd0f2e1e" }, "downloads": -1, "filename": "django_celery_async_view-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "747419e45f30f6839f962bf164f22aad", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 15130, "upload_time": "2017-11-15T07:07:57", "url": "https://files.pythonhosted.org/packages/4c/69/df17f06d313265c17e45e30f6a1d8e1e7857846bd71c44ffc6e8da4acec9/django_celery_async_view-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "730458af0f2d78e81cbfff897624eb23", "sha256": "a4b520dc578c97f4a830b5c68daf21192990a7b36c8c0ae2c0a73baa95be08ec" }, "downloads": -1, "filename": "django_celery_async_view-0.1.0.tar.gz", "has_sig": false, "md5_digest": "730458af0f2d78e81cbfff897624eb23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13077, "upload_time": "2017-11-15T07:07:59", "url": "https://files.pythonhosted.org/packages/00/a1/9166f7ed680176b7349cad6f7a710ee74bedf81970cc3ea611ab0994680f/django_celery_async_view-0.1.0.tar.gz" } ] }