{ "info": { "author": "Django Software Foundation", "author_email": "foundation@djangoproject.com", "bugtrack_url": null, "classifiers": [], "description": "asgi_ipc\n========\n\n.. image:: https://api.travis-ci.org/django/asgi_ipc.svg\n :target: https://travis-ci.org/django/asgi_ipc\n\n.. image:: https://img.shields.io/pypi/v/asgi_ipc.svg\n :target: https://pypi.python.org/pypi/asgi_ipc\n\nAn ASGI channel layer that uses POSIX shared memory IPC as its backing store\n(only works between processes on the same machine).\n\nIPC is still a bit of a wild west of UNIX compatability, so if you find weird\nerrors, please file an issue with details and exact system specifications. In\npartcular, this module is tested and works well on Linux kernels and the Windows\nSubsystem for Linux; it also works on Mac OS but will not be able to detect\ndeadlock situations due to limitations in the kernel.\n\n\nUsage\n-----\n\nYou'll need to instantiate the channel layer with a path prefix to create\nIPC objects underneath; any channel layers with the same prefix will talk to\neach other as long as they're on the same machine.\n\nExample:\n\n.. code-block:: python\n\n import asgi_ipc as asgi\n\n channel_layer = asgi.IPCChannelLayer(\n prefix=\"aeracode\",\n message_memory=200 * 1024 * 1024,\n )\n\n channel_layer.send(\"my_channel\", {\"text\": \"Hello ASGI\"})\n print(channel_layer.receive([\"my_channel\", ]))\n\n``prefix``\n~~~~~~~~~~\n\nPrefix to use for IPC objects under the root namespace. Defaults to ``asgi``.\nIPC layers on the same machine with the same prefix will talk to each other.\n\n``message_memory``\n~~~~~~~~~~~~~~~~~~\n\nThe amount of shared memory to allocate to the channel storage, in bytes.\nDefaults to 100MB. All of your in-flight messages must fit into this,\notherwise you'll get ``ChannelFull`` errors if the memory space is full up.\n\nASGI messages can be a maximum of one megabyte, and are usually much smaller.\nThe IPC routing metadata on top of each message is approximately 50 bytes.\n\n``group_memory``\n~~~~~~~~~~~~~~~~\n\nThe amount of shared memory to allocate to the group storage, in bytes.\nDefaults to 20MB. All of your group membership data must fit into this space,\notherwise your group memberships may fail to persist.\n\nYou can fit approximately 4000 group-channel membership associations into one\nmegabyte of memory.\n\n``expiry``\n~~~~~~~~~~\n\nMessage expiry in seconds. Defaults to ``60``. You generally shouldn't need\nto change this, but you may want to turn it down if you have peaky traffic you\nwish to drop, or up if you have peaky traffic you want to backlog until you\nget to it.\n\n``group_expiry``\n~~~~~~~~~~~~~~~~\n\nGroup expiry in seconds. Defaults to ``86400``. Interface servers will drop\nconnections after this amount of time; it's recommended you reduce it for a\nhealthier system that encourages disconnections.\n\n``capacity``\n~~~~~~~~~~~~\n\nDefault channel capacity. Defaults to ``100``. Once a channel is at capacity,\nit will refuse more messages. How this affects different parts of the system\nvaries; a HTTP server will refuse connections, for example, while Django\nsending a response will just wait until there's space.\n\n``channel_capacity``\n~~~~~~~~~~~~~~~~~~~~\n\nPer-channel capacity configuration. This lets you tweak the channel capacity\nbased on the channel name, and supports both globbing and regular expressions.\n\nIt should be a dict mapping channel name pattern to desired capacity; if the\ndict key is a string, it's intepreted as a glob, while if it's a compiled\n``re`` object, it's treated as a regular expression.\n\nThis example sets ``http.request`` to 200, all ``http.response!`` channels\nto 10, and all ``websocket.send!`` channels to 20:\n\n.. code-block:: python\n\n channel_capacity={\n \"http.request\": 200,\n \"http.response!*\": 10,\n re.compile(r\"^websocket.send\\!.+\"): 20,\n }\n\nIf you want to enforce a matching order, use an ``OrderedDict`` as the\nargument; channels will then be matched in the order the dict provides them.\n\nDependencies\n------------\n\nAll Channels projects currently support Python 2.7, 3.4 and 3.5.\n\nContributing\n------------\n\nPlease refer to the\n`main Channels contributing docs `_.\nThat also contains advice on how to set up the development environment and run the tests.\n\nMaintenance and Security\n------------------------\n\nTo report security issues, please contact security@djangoproject.com. For GPG\nsignatures and more security process information, see\nhttps://docs.djangoproject.com/en/dev/internals/security/.\n\nTo report bugs or request new features, please open a new GitHub issue.\n\nThis repository is part of the Channels project. For the shepherd and maintenance team, please see the\n`main Channels readme `_.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/django/asgi_ipc/", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "asgi_ipc", "package_url": "https://pypi.org/project/asgi_ipc/", "platform": "", "project_url": "https://pypi.org/project/asgi_ipc/", "project_urls": { "Homepage": "http://github.com/django/asgi_ipc/" }, "release_url": "https://pypi.org/project/asgi_ipc/1.4.2/", "requires_dist": null, "requires_python": "", "summary": "Posix IPC-backed ASGI channel layer implementation", "version": "1.4.2" }, "last_serial": 3549088, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "85a34ff86d802d8db2223a8bfcd1ea75", "sha256": "4fd0fd4531ba9c701d68adfa482a652ef271fb208c5b44c9d84f5a1e1ebc9432" }, "downloads": -1, "filename": "asgi_ipc-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85a34ff86d802d8db2223a8bfcd1ea75", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 6159, "upload_time": "2016-05-07T19:59:19", "url": "https://files.pythonhosted.org/packages/a0/d5/c3bc63684cf6a7fd07a893fe4186c9637ebedda3a26dc7a2ef7b5aa1f80a/asgi_ipc-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d665e843aa8b01d85c55b470b4d4b4d3", "sha256": "57f35ae1a4960485bd254f9065b94275079e01647e4954a25f9cbea1a359e177" }, "downloads": -1, "filename": "asgi_ipc-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d665e843aa8b01d85c55b470b4d4b4d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4786, "upload_time": "2016-05-07T19:59:12", "url": "https://files.pythonhosted.org/packages/38/05/73e79d8c3cada058f042a73ce0c63b8820c96c7cc2b05e32950732e94165/asgi_ipc-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "829bfc4cebcd28ddcd35b9da4959e472", "sha256": "0df0ab11b99810e27f966451ce4694713d2103c31d92c0c466a561946388ba8d" }, "downloads": -1, "filename": "asgi_ipc-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "829bfc4cebcd28ddcd35b9da4959e472", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6460, "upload_time": "2016-06-08T23:57:41", "url": "https://files.pythonhosted.org/packages/6a/6b/55fe3c9887c74f696face8f67f88ca4714fc570b59bfdcb4cd87871b62cf/asgi_ipc-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd71a211e24fe58ebbba8854c15e9993", "sha256": "3f67a4ecd10ecf5d2c205a8ad809021b3873dafddc164940a8ba9c5b8c5eb7a2" }, "downloads": -1, "filename": "asgi_ipc-0.3.0.tar.gz", "has_sig": false, "md5_digest": "bd71a211e24fe58ebbba8854c15e9993", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4840, "upload_time": "2016-06-08T23:57:37", "url": "https://files.pythonhosted.org/packages/32/c2/7f860858946851d5e560a6a398257bff4f1a67507aa0c1472184723e4d36/asgi_ipc-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "bfd714e8cab3c17d42903cc58ee186e9", "sha256": "1915d40b441c339590101cba6e46264f9a0d13c2a8f0c391a89030d703c944b5" }, "downloads": -1, "filename": "asgi_ipc-0.3.1.tar.gz", "has_sig": false, "md5_digest": "bfd714e8cab3c17d42903cc58ee186e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4850, "upload_time": "2016-06-09T00:07:56", "url": "https://files.pythonhosted.org/packages/46/bd/e2fb794c4bdbc22f06dea6b9d912e4286e144eada88ae872588a785a992b/asgi_ipc-0.3.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "65e24d871be570adf1e583285f6acfde", "sha256": "3bb86e96201a224436b35156760ed8ed2287a4042dc9f888731e7a21e1bffab8" }, "downloads": -1, "filename": "asgi_ipc-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "65e24d871be570adf1e583285f6acfde", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 8223, "upload_time": "2016-07-06T22:38:54", "url": "https://files.pythonhosted.org/packages/9f/6b/3db7e21806db62d9974d72896e4fd93bfa014525d6511347dbb181dafde7/asgi_ipc-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a613d19af6d09649e2ccfad5670eee4f", "sha256": "4bd56898d8b99185bd97285e16a9e2a9865bdc0870c4111f0209be87b11de130" }, "downloads": -1, "filename": "asgi_ipc-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a613d19af6d09649e2ccfad5670eee4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6018, "upload_time": "2016-07-06T22:38:50", "url": "https://files.pythonhosted.org/packages/7f/11/0556fa0e0c901dc58c0765940060e60ceec5900b0ce01e18c681888cbec6/asgi_ipc-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "73a688a6a5acb3be028b39984329da2f", "sha256": "be8f48318646feaa330a3eb6e3b15a6845372923146d5c67b4378fbe99e8059b" }, "downloads": -1, "filename": "asgi_ipc-1.1.0.tar.gz", "has_sig": false, "md5_digest": "73a688a6a5acb3be028b39984329da2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6096, "upload_time": "2016-07-17T06:03:15", "url": "https://files.pythonhosted.org/packages/92/4a/c2d39591f469fb1c9b2de8877d2e795e03e146d2d7d569ee590893da6697/asgi_ipc-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "070b11576e0f10cded73c50d1a59bdcb", "sha256": "99df378982f5d5a14fc997b80785ec3f05645c9f15bf4e393ca4012b0aac9e18" }, "downloads": -1, "filename": "asgi_ipc-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "070b11576e0f10cded73c50d1a59bdcb", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 8803, "upload_time": "2016-11-04T13:49:09", "url": "https://files.pythonhosted.org/packages/db/09/3427f73d1a066da048e4cd3ef1e12a3499f595d5d9c67e1983b3f137a9aa/asgi_ipc-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4aec9be97be96f3165d1c439cc583822", "sha256": "c9d51a737bc2e54e4543a50ca8b9ac6d8ebe9d4563d7e5b07a9a6830a4f3f00e" }, "downloads": -1, "filename": "asgi_ipc-1.2.0.tar.gz", "has_sig": false, "md5_digest": "4aec9be97be96f3165d1c439cc583822", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6347, "upload_time": "2016-11-04T13:49:06", "url": "https://files.pythonhosted.org/packages/07/e0/36858c61c855bca1414b8d6adaeda5a1a466980cf9daaba222344c42c6e1/asgi_ipc-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "8018efe693937a935426b11f5892831d", "sha256": "f95fd7de94dd7431e48f8eea78036fa32123ba07ee7b1832e4390db497540009" }, "downloads": -1, "filename": "asgi_ipc-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8018efe693937a935426b11f5892831d", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9408, "upload_time": "2017-04-01T14:13:33", "url": "https://files.pythonhosted.org/packages/95/40/58a17785eb6ccd934dbeae91586fbb9236072b4cba7355c5cf412980a8a1/asgi_ipc-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0443a4b9d4902041b9a41a1bee27fb1f", "sha256": "b73dd2f2f70c84c8352968a7d91e1279bbe1e91f389612749fb49fb64c30d7f6" }, "downloads": -1, "filename": "asgi_ipc-1.3.0.tar.gz", "has_sig": false, "md5_digest": "0443a4b9d4902041b9a41a1bee27fb1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6810, "upload_time": "2017-04-01T14:13:30", "url": "https://files.pythonhosted.org/packages/7e/cf/8ec42c0b06331f2866300768887afe389c6f2da71a9f09acdc1db9a40a77/asgi_ipc-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "d43422fd10697e6e77f03645164c193a", "sha256": "9aed2fa4714704ced9dd92ffed1e498e5d71c4bb76e783ef822a47339ed472bb" }, "downloads": -1, "filename": "asgi_ipc-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d43422fd10697e6e77f03645164c193a", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9421, "upload_time": "2017-04-02T14:31:07", "url": "https://files.pythonhosted.org/packages/53/1f/1bafce5954408144f0cd3e8fc132937344d6767ab51800733940e2ffdd89/asgi_ipc-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c80e000ece3ecfe56fc6e6e2a0a029cb", "sha256": "fbc0728d7de62fd13cba46d176564f556a8175bfd587c982200e891feaeea8b6" }, "downloads": -1, "filename": "asgi_ipc-1.3.1.tar.gz", "has_sig": false, "md5_digest": "c80e000ece3ecfe56fc6e6e2a0a029cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6815, "upload_time": "2017-04-02T14:31:05", "url": "https://files.pythonhosted.org/packages/7b/3a/390c8925a0171f9ae274186bf4a4221e9495d4cbf24af3dedf06c0f276ad/asgi_ipc-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "90e91d1a16402f7a9b01f56d27af57b5", "sha256": "cfebd451c047f5ea2da998679fd0fc02ff3cd648b02db624ce33b5983dc3eaa4" }, "downloads": -1, "filename": "asgi_ipc-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "90e91d1a16402f7a9b01f56d27af57b5", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9918, "upload_time": "2017-05-24T16:48:44", "url": "https://files.pythonhosted.org/packages/87/0a/1a84571969f052967a3fb9efa7e7fe345944834feab0003883d260140bae/asgi_ipc-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bdefbc5eaa661d775116868555c74033", "sha256": "1bae453d771eb92c0ec558b826fc0bce75a2a61bf21187784d4e4dc11710e588" }, "downloads": -1, "filename": "asgi_ipc-1.4.0.tar.gz", "has_sig": false, "md5_digest": "bdefbc5eaa661d775116868555c74033", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6752, "upload_time": "2017-05-24T16:48:42", "url": "https://files.pythonhosted.org/packages/57/f7/c5087b1d723f3ddc2369ac549563dca9d4fce2d7147ffbcea04777216780/asgi_ipc-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "ddd23d81f71df3db87f5949eacbc8ea4", "sha256": "311aeb6847ab791a9ce5117a4d823bcedd17c7e8a1a1a6900fd9325ef5204cac" }, "downloads": -1, "filename": "asgi_ipc-1.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ddd23d81f71df3db87f5949eacbc8ea4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10029, "upload_time": "2017-08-11T23:18:23", "url": "https://files.pythonhosted.org/packages/32/2a/7914af57d49a32427eb4072fe0fdf2eec5ae7241a7876815958376291e48/asgi_ipc-1.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e38a22bcbcdba56b2effa121c96a73f5", "sha256": "87cc9dda476d28f335261b73f0f3070f28847718de2e64da9a80492638203e43" }, "downloads": -1, "filename": "asgi_ipc-1.4.1.tar.gz", "has_sig": false, "md5_digest": "e38a22bcbcdba56b2effa121c96a73f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6852, "upload_time": "2017-08-11T23:18:21", "url": "https://files.pythonhosted.org/packages/82/95/ba8b73c8aaed8ce565e35fe0a7f0593fa003f25769b34b50ccdc1aab7932/asgi_ipc-1.4.1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "17a6b6a1a25672d3d1c702fe806aa4ff", "sha256": "07e0fdacc4f1c4d91054b7da06c62c6806cd28e9e113744c08a7dfaf7a335d3f" }, "downloads": -1, "filename": "asgi_ipc-1.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "17a6b6a1a25672d3d1c702fe806aa4ff", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10057, "upload_time": "2017-10-26T07:09:43", "url": "https://files.pythonhosted.org/packages/4c/da/f8356f2f2c7898c532a3d06638171183c3dbd401cff77eccb15985ed1a99/asgi_ipc-1.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0cb6e35867600acfb4e46405dfa0678", "sha256": "2403f41184405791b05e7aee570bd6ccd47e2d91845d78fe17adcf58ef48c037" }, "downloads": -1, "filename": "asgi_ipc-1.4.2.tar.gz", "has_sig": false, "md5_digest": "b0cb6e35867600acfb4e46405dfa0678", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6876, "upload_time": "2017-10-26T07:09:40", "url": "https://files.pythonhosted.org/packages/cd/6a/6198cf9d8ff16740b71ddbeed27315a426d7052946fe1d053550f0152c22/asgi_ipc-1.4.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "17a6b6a1a25672d3d1c702fe806aa4ff", "sha256": "07e0fdacc4f1c4d91054b7da06c62c6806cd28e9e113744c08a7dfaf7a335d3f" }, "downloads": -1, "filename": "asgi_ipc-1.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "17a6b6a1a25672d3d1c702fe806aa4ff", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 10057, "upload_time": "2017-10-26T07:09:43", "url": "https://files.pythonhosted.org/packages/4c/da/f8356f2f2c7898c532a3d06638171183c3dbd401cff77eccb15985ed1a99/asgi_ipc-1.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0cb6e35867600acfb4e46405dfa0678", "sha256": "2403f41184405791b05e7aee570bd6ccd47e2d91845d78fe17adcf58ef48c037" }, "downloads": -1, "filename": "asgi_ipc-1.4.2.tar.gz", "has_sig": false, "md5_digest": "b0cb6e35867600acfb4e46405dfa0678", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6876, "upload_time": "2017-10-26T07:09:40", "url": "https://files.pythonhosted.org/packages/cd/6a/6198cf9d8ff16740b71ddbeed27315a426d7052946fe1d053550f0152c22/asgi_ipc-1.4.2.tar.gz" } ] }