{ "info": { "author": "Luca Sbardella", "author_email": "luca@quantmind.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Utilities" ], "description": "Asynchronous Django\n=========================\n\n:Badges: |license| |pyversions| |status| |pypiversion|\n:CI: |circleci| |coverage|\n:Documentation: https://github.com/quantmind/pulsar-django\n:Downloads: http://pypi.python.org/pypi/pulsar-django\n:Source: https://github.com/quantmind/pulsar-django\n:Keywords: asynchronous, django, wsgi, websocket, redis\n\n\nThe `pulse` module is a django_ application\nfor running a django web site with pulsar_.\nAdd it to the list of your ``INSTALLED_APPS``:\n\n.. code:: python\n\n INSTALLED_APPS = (\n ...,\n 'pulse',\n ...\n )\n\nand run the site via the ``pulse`` command::\n\n python manage.py pulse\n\nCheck the django chat example ``djchat`` for a django chat\napplication served by a multiprocessing pulsar server.\n\nBy default, the ``pulse`` command creates a ``Wsgi`` middleware which\nruns the django application in a separate thread of execution from the\nmain event loop.\nThis is a standard programming pattern when using asyncio with blocking\nfunctions.\nTo control the number of thread workers in the event loop executor (which\nis a pool of threads) one uses the\n``thread-workers`` option. For example, the\nfollowing command::\n\n python manage.py pulse -w 4 --thread-workers 20\n\nwill run four process based actors, each with\nan executor with up to 20 threads.\n\nGreenlets\n===============\n\nIt is possible to run django in fully asynchronous mode, i.e. without\nrunning the middleware in the event loop executor.\nCurrently, this is available when using PostgreSql backend\nonly, and it requires the greenlet_ library.\n\nTo run django using greenlet support::\n\n python manage.py pulse -w 4 --greenlet\n\nBy default it will run the django middleware on a pool of 100 greenlets (and\ntherefore approximately 100 separate database connections per actor). To\nadjust this number::\n\n python manage.py pulse -w 4 --greenlet 200\n\n\nDjango Chat Example\n=======================\n\nThis is a web chat application which illustrates how to run a django\nsite with pulsar and how to include pulsar asynchronous request middleware\ninto django.\n\nTo run::\n\n python manage.py pulse\n\nIf running for the first time, issue the::\n\n python manage.py migrate\n\ncommand and create the super user::\n\n python manage.py createsuperuser\n\n\nMessage and data backend\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy default, messages from connected (websocket) clients are synchronised via\nthe pulsar data store which starts when the django\nsite starts.\n\nIt is possible to specify a different data store via the\n``data-store`` option. For example, it is possible\nto use redis_ as an alternative data store\nby issuing the following start up command::\n\n python manage.py pulse --data-store redis://127.0.0.1:6379/3\n\n\n\n.. _redis: http://redis.io/\n.. _django: https://docs.djangoproject.com/en/1.9/ref/applications/\n.. _pulsar: https://github.com/quantmind/pulsar\n.. _greenlet: https://greenlet.readthedocs.io\n.. |pypiversion| image:: https://badge.fury.io/py/pulsar-django.svg\n :target: https://pypi.python.org/pypi/pulsar-django\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/pulsar-django.svg\n :target: https://pypi.python.org/pypi/pulsar-django\n.. |license| image:: https://img.shields.io/pypi/l/pulsar-django.svg\n :target: https://pypi.python.org/pypi/pulsar-django\n.. |status| image:: https://img.shields.io/pypi/status/pulsar-django.svg\n :target: https://pypi.python.org/pypi/pulsar-django\n.. |coverage| image:: https://codecov.io/gh/quantmind/pulsar-django/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/quantmind/pulsar-django\n.. |circleci| image:: https://circleci.com/gh/quantmind/pulsar-django.svg?style=svg\n :target: https://circleci.com/gh/quantmind/pulsar-django", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/quantmind/pulsar-django", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "pulsar-django", "package_url": "https://pypi.org/project/pulsar-django/", "platform": "", "project_url": "https://pypi.org/project/pulsar-django/", "project_urls": { "Homepage": "https://github.com/quantmind/pulsar-django" }, "release_url": "https://pypi.org/project/pulsar-django/0.3.0/", "requires_dist": null, "requires_python": "", "summary": "django command to serve sites with pulsar asynchronous framework", "version": "0.3.0" }, "last_serial": 3370539, "releases": { "0.1.0": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e3d108651e6e9e7ba53cab0476f1641e", "sha256": "c9b52c3062af2abee5c375f5c5ae66253314cb679c6f33a8b100fd4e31fe122f" }, "downloads": -1, "filename": "pulsar_django-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e3d108651e6e9e7ba53cab0476f1641e", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7136, "upload_time": "2016-08-04T09:47:42", "url": "https://files.pythonhosted.org/packages/22/b4/751801536081c4b0c1b892e9e935628e88ed10eafda65bc49d2a13f1c524/pulsar_django-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "37ee124cd5b451bbb66fd893fddcf091", "sha256": "50f71c93adb320d18ca3c695b55ccc2d73216e9b884b486a30c332ac7ecc5ed9" }, "downloads": -1, "filename": "pulsar-django-0.1.1.tar.gz", "has_sig": false, "md5_digest": "37ee124cd5b451bbb66fd893fddcf091", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10045, "upload_time": "2016-08-04T09:47:39", "url": "https://files.pythonhosted.org/packages/c1/2a/e3e11b1c5acfbebf635bfbf35b7223103cc5db82c6b2c8c8c1142d86413f/pulsar-django-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "6abf188c299690471fb65b6c1e8bd429", "sha256": "f342ccbc1b28cfd6e774a78c659af198c83b6c93c28e45191dd49a08e5344979" }, "downloads": -1, "filename": "pulsar_django-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6abf188c299690471fb65b6c1e8bd429", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7127, "upload_time": "2017-01-21T09:02:46", "url": "https://files.pythonhosted.org/packages/24/a3/8649120dcdad3923a4973ae773e3470c78b965a3ae4932e2ec1635558915/pulsar_django-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b620110edf6fa1709baf81b575a053ff", "sha256": "99e0051ee41fbc3e3e5f0ece1a633c89f595d28465d0ac6039829c9cf5909555" }, "downloads": -1, "filename": "pulsar-django-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b620110edf6fa1709baf81b575a053ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9940, "upload_time": "2017-01-21T09:02:44", "url": "https://files.pythonhosted.org/packages/5d/50/03e80a7dc26b1272fa9667a3beac697f98f0e9d63dd07a8e1d70ad993c39/pulsar-django-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ee979a7c0d19aaea779dbf6ea59cc0c2", "sha256": "02935b75c05e6ffc201344ab770b1c70cafb2d4e3d4e0e31edf370873177a9ca" }, "downloads": -1, "filename": "pulsar-django-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ee979a7c0d19aaea779dbf6ea59cc0c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10114, "upload_time": "2017-11-28T10:21:17", "url": "https://files.pythonhosted.org/packages/14/9f/efe190c6cbb63fb72d0729cb89161b5fab80e459429744d1c991756e13b3/pulsar-django-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ee979a7c0d19aaea779dbf6ea59cc0c2", "sha256": "02935b75c05e6ffc201344ab770b1c70cafb2d4e3d4e0e31edf370873177a9ca" }, "downloads": -1, "filename": "pulsar-django-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ee979a7c0d19aaea779dbf6ea59cc0c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10114, "upload_time": "2017-11-28T10:21:17", "url": "https://files.pythonhosted.org/packages/14/9f/efe190c6cbb63fb72d0729cb89161b5fab80e459429744d1c991756e13b3/pulsar-django-0.3.0.tar.gz" } ] }