{ "info": { "author": "Nils Diefenbach", "author_email": "nlsdfnbch.foss@kolabnow.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "[![PyPI version](https://badge.fury.io/py/Pysher.svg)](https://badge.fury.io/py/Pysher)\n\nPysher\n=============\n\n`pysher` is a python module for handling pusher websockets. It is based on @ekulyk's `PythonPusherClient`. This fork is meant as \na continuation of the project and is actively maintained. A key difference is the dropped support for pre-3.5 Python versions.\n\nInstallation\n------------\n\nSimply run `python setup.py install` - or install via pip `pip install pysher`.\n\nThis module depends on websocket-client module available from: \n\nExample\n-------\n\nExample of using this pusher client to consume websockets::\n\n```python\nimport pysher\n\n# Add a logging handler so we can see the raw communication data\nimport logging\nroot = logging.getLogger()\nroot.setLevel(logging.INFO)\nch = logging.StreamHandler(sys.stdout)\nroot.addHandler(ch)\n\npusher = pysher.Pusher(appkey)\n\ndef my_func(*args, **kwargs):\n print(\"processing Args:\", args)\n print(\"processing Kwargs:\", kwargs)\n\n# We can't subscribe until we've connected, so we use a callback handler\n# to subscribe when able\ndef connect_handler(data):\n channel = pusher.subscribe('mychannel')\n channel.bind('myevent', my_func)\n\npusher.connection.bind('pusher:connection_established', connect_handler)\npusher.connect()\n\nwhile True:\n # Do other things in the meantime here...\n time.sleep(1)\n```\n\nSending pusher events to a channel can be done simply using the pusher client supplied by pusher. You can get it here: \n\n import pusher\n pusher.app_id = app_id\n pusher.key = appkey\n\n p = pusher.Pusher()\n p['mychannel'].trigger('myevent', 'mydata')\n\nPerformance\n------\nPysher relies on websocket-client (websocket-client on pyPI, websocket import in code), which by default does utf5 validation in pure python. This is somewhat cpu hungry for lot's of messages (100's of KB/s or more). To optimize this validation consider installing the wsaccel module from pyPI to let websocket-client use C-compiled utf5 validation methods (websocket does this automatically once wsaccel is present and importable).\n\nThanks\n------\nA big thanks to @ekulyk for developing the [PythonPusherClient](https://github.com/ekulyk/PythonPusherClient) library.\n\n\nCopyright\n---------\n\nMTI License - See LICENSE for details.\n\nChangelog\n---------\n## Version 1.0.2\n### Fixed\n - #38 Fix missing `\u1e81s` arg for websocket app callbacks, thanks to @[squgeim](https://github.com/squgeim)\n## Version 1.0.0\n### Updated\n- #35 Support websocket-client >0.48 only and fix reconnect error, thanks to @[agronholm](https://github.com/agronholm)\n\n**This change may break existing setups and is backwards-incompatible!**\n\n## Version 0.5.0\n### Added\n - #14 Added support for cluster configuration, thanks to @[Yvictor](https://github.com/Yvictor)\n\n### Fixed\n - #30 Require websocket-client version 0.48 or earlier.\n - #24 Signature generation now works as expected, thanks to @[agronholm](https://github.com/agronholm)\n - #31 Name threads of the pysher lib for better debugging, thanks to @[caliloo](https://github.com/caliloo)\n\n## Version 0.4.2\n### Fixed:\n - #11 Global Logger settings no longer overridden in Connection logger\n\n## Version 0.4.0\n### Added:\n - #8 Add support for WebSocket over HTTP proxy, thanks to @[1tgr](https://github.com/1tgr)\n\n## Version 0.3.0\n### Added:\n - #7 Auto-resubscribe to channels after reconnecting, thanks to @[pinealan](https://github.com/pinealan)\n\n### Fixed:\n- #4, #5 Updated references to the library name, thanks to @[deanmaniatis](https://github.com/deanmaniatis)\n\n## Version 0.2.0 \n### Added:\n- #2 Allow for token generated by auth endpoint, thanks to @[wardcraigj](https://github.com/wardcraigj)\n- #3 Allow instantiation with custom host, thanks to @[wardcraigj](https://github.com/wardcraigj)\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/nlsdfnbch/Pysher", "keywords": "pusher websocket client", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Pysher", "package_url": "https://pypi.org/project/Pysher/", "platform": "", "project_url": "https://pypi.org/project/Pysher/", "project_urls": { "Homepage": "https://github.com/nlsdfnbch/Pysher" }, "release_url": "https://pypi.org/project/Pysher/1.0.4/", "requires_dist": [ "websocket-client (!=0.49)" ], "requires_python": "", "summary": "Pusher websocket client for python, based on Erik Kulyk's PythonPusherClient", "version": "1.0.4" }, "last_serial": 4323261, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "861da26fc70360d4323e1b3fd6800b32", "sha256": "b0b73a8f8aa7f6c482bea86bd54377898057fbc1f2ebd8df6fce11ae85c6711d" }, "downloads": -1, "filename": "Pysher-0.1.0.zip", "has_sig": false, "md5_digest": "861da26fc70360d4323e1b3fd6800b32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10616, "upload_time": "2017-10-25T11:44:16", "url": "https://files.pythonhosted.org/packages/bb/c0/f57b451d153710b72b15d0b483f331d3d79e1ee91afc2c43ec21b037e8f7/Pysher-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e71fd9decec1c8be57fea5eca50b4f80", "sha256": "f43a3a26a325fbb93da852ceadf239aceb33babfd0ad7d07995797164c561c06" }, "downloads": -1, "filename": "Pysher-0.1.1.zip", "has_sig": false, "md5_digest": "e71fd9decec1c8be57fea5eca50b4f80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10580, "upload_time": "2017-10-25T11:46:31", "url": "https://files.pythonhosted.org/packages/75/94/b7cab8a08c2a2467078dbe182db26ee2d4ddba07a610e9b6286fe45fa51c/Pysher-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1ef6e46939fad7e1b739010f20e2cebf", "sha256": "48b0b30a7ff8d6dea1740cacbde6ea90d6c337e22c6d6654f96dc75cea2ba9b5" }, "downloads": -1, "filename": "Pysher-0.1.2.zip", "has_sig": false, "md5_digest": "1ef6e46939fad7e1b739010f20e2cebf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10619, "upload_time": "2017-10-25T11:47:50", "url": "https://files.pythonhosted.org/packages/95/43/c9beaffaf671ecc9adf5d060ec3e5205ac7122e60cb86b050b3c60d2ee24/Pysher-0.1.2.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "7019c5001070d66ddda8b94ca8e618de", "sha256": "33678ab0368e63a33dd3f68e59129a6c0f288307424cc233ffc7721c6d11ccda" }, "downloads": -1, "filename": "Pysher-0.2.0.tar.gz", "has_sig": false, "md5_digest": "7019c5001070d66ddda8b94ca8e618de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7066, "upload_time": "2017-11-24T14:34:30", "url": "https://files.pythonhosted.org/packages/3a/e5/2470a6f74f775656cf88b94d1bfa0efec6e6d05e80f63314860d6119a3b4/Pysher-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3be19e7ec5ca1384b374f751d5af9da6", "sha256": "92b075e3a1d4e153bdef81183374cdcca39f72a7a567f86df067787f41e07c25" }, "downloads": -1, "filename": "Pysher-0.3.0.tar.gz", "has_sig": false, "md5_digest": "3be19e7ec5ca1384b374f751d5af9da6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7094, "upload_time": "2018-01-10T14:17:50", "url": "https://files.pythonhosted.org/packages/52/69/e8b961edc2be521837d40a3ae6960916625cd474657fbf52d05d6fd33839/Pysher-0.3.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "1be09e3d6df6e5f0283dea0f14c230b7", "sha256": "d179242af153e173053dd57d5903924f78724ae242058b40a3652b42f16c677c" }, "downloads": -1, "filename": "Pysher-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1be09e3d6df6e5f0283dea0f14c230b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9835, "upload_time": "2018-06-13T13:40:21", "url": "https://files.pythonhosted.org/packages/ea/9f/be255fbe711fcb97255ef23ce5a643cdec08467bf082559c23a62838e069/Pysher-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cbb18544757ed7a494801e08d6bce52", "sha256": "26f806f61270f69d779ce1018b8f9daef044beb19a2bd752e1dba49af36c0ed7" }, "downloads": -1, "filename": "Pysher-0.4.2.tar.gz", "has_sig": false, "md5_digest": "3cbb18544757ed7a494801e08d6bce52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7310, "upload_time": "2018-03-01T16:31:12", "url": "https://files.pythonhosted.org/packages/2d/a8/b46042c12da6ad5eeefcbb1077fb8127a7e097c8e1e8412e906da2a4fec3/Pysher-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d36b28decb1168cd42c36796d6b0c807", "sha256": "d552bc1373273fce1df195c2e8a9fc091325faaec7fb1ac75ca541ced3e8976a" }, "downloads": -1, "filename": "Pysher-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d36b28decb1168cd42c36796d6b0c807", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9832, "upload_time": "2018-06-13T13:40:22", "url": "https://files.pythonhosted.org/packages/02/6e/bd0804087be5f432fe2407b8bf00b2abc95f7475274fdc26e82f7d4db0cb/Pysher-0.5.0-py3-none-any.whl" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "5ee00a6bee31121298bc102564de86e5", "sha256": "a2b928cdbdf5180257fcf6932dd9ea9fa76eb8643a89551638d83074376553f0" }, "downloads": -1, "filename": "Pysher-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5ee00a6bee31121298bc102564de86e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10344, "upload_time": "2018-08-18T05:50:54", "url": "https://files.pythonhosted.org/packages/49/17/fe8bbd28470a4282c905a4c150dbf94e559a9366c999e09d257a5ad8bf0d/Pysher-0.5.1-py3-none-any.whl" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "3b2dc0d02c37d7f7b2d2fbd6483ede87", "sha256": "9bcc1b19163b5d61c37a19242cc03606a8eac2a3cb71dfacf4cea92027d241a2" }, "downloads": -1, "filename": "Pysher-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3b2dc0d02c37d7f7b2d2fbd6483ede87", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10985, "upload_time": "2018-08-26T10:48:30", "url": "https://files.pythonhosted.org/packages/7f/0d/20532bf0b30438954de5809e65db27f1d286d1b10d7e7b216aecf13a67e0/Pysher-0.5.2-py3-none-any.whl" } ], "0.6.0b0": [ { "comment_text": "", "digests": { "md5": "8fc438b8c228e666a0cf55c7a3f96230", "sha256": "406066e6baf1d6fd652fb95146f7a7fafb3f17498268a7d68cbab14b60a378f7" }, "downloads": -1, "filename": "Pysher-0.6.0b0-py3-none-any.whl", "has_sig": false, "md5_digest": "8fc438b8c228e666a0cf55c7a3f96230", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10286, "upload_time": "2018-08-12T07:51:44", "url": "https://files.pythonhosted.org/packages/6a/90/b7034d13a195ea3d0558f6cd3295181620828fe151b7a34f3f06b4262a24/Pysher-0.6.0b0-py3-none-any.whl" } ], "0.6.0b1": [ { "comment_text": "", "digests": { "md5": "4746e6dfeb70b6bb420cfb1722e40714", "sha256": "d70eb757063e4f3bf243058f30670c9cfc72db063421968ccf046d080a8511b7" }, "downloads": -1, "filename": "Pysher-0.6.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "4746e6dfeb70b6bb420cfb1722e40714", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10325, "upload_time": "2018-08-12T08:16:03", "url": "https://files.pythonhosted.org/packages/ed/62/72b06ada8c77e8d489d1a5c9122bc8f6fa08a174e3f7980bccc4018a9ba0/Pysher-0.6.0b1-py3-none-any.whl" } ], "0.6.0b2": [ { "comment_text": "", "digests": { "md5": "efafaf225787b09306d9364764b03a57", "sha256": "f9895f48a433805578eaa7e20d92c44599617eb3bec70077d6ad3c63299c619d" }, "downloads": -1, "filename": "Pysher-0.6.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "efafaf225787b09306d9364764b03a57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10357, "upload_time": "2018-08-12T08:20:24", "url": "https://files.pythonhosted.org/packages/28/cc/3e786ce66ed963e146994e86a1360bdd8e53199557f96ca7dcc1e9ad9841/Pysher-0.6.0b2-py3-none-any.whl" } ], "1.0.0.0": [ { "comment_text": "", "digests": { "md5": "f5bd14b0f579b0035bef2faae31231f8", "sha256": "1a880599aba94a9f213b5e20f598d2f03b8cecc77d138b21f56370c94f647a8b" }, "downloads": -1, "filename": "Pysher-1.0.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f5bd14b0f579b0035bef2faae31231f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11144, "upload_time": "2018-08-26T11:16:01", "url": "https://files.pythonhosted.org/packages/19/cd/195faf3226396294729473afa5d82dc97e6f6a26bc526fb2ff4cf4407c1d/Pysher-1.0.0.0-py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "029ec835a840fe15650a7ae670fc8b11", "sha256": "fc0501d778d870d3a809c828b3ba35c738d7122a770f8fe2e749a7dc2bd9e11a" }, "downloads": -1, "filename": "Pysher-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "029ec835a840fe15650a7ae670fc8b11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11121, "upload_time": "2018-08-26T11:25:46", "url": "https://files.pythonhosted.org/packages/23/09/00f40f0236266277f69c7354528bd593ec7f25bd9729e94b30765c2c9900/Pysher-1.0.1-py3-none-any.whl" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "b59ede1565327f6c8cc998a7b00b2c4c", "sha256": "ffa7e9aa0bac3ed24c3e4bcdbc126170ad98f95cdbb708dc72612f153b9c3632" }, "downloads": -1, "filename": "Pysher-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b59ede1565327f6c8cc998a7b00b2c4c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11214, "upload_time": "2018-09-08T10:33:28", "url": "https://files.pythonhosted.org/packages/f2/be/51e5c5330c6b48684b5b10e1c9c151001c5f1a5f5ab948367849987bbb80/Pysher-1.0.2-py3-none-any.whl" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "ae17e10f53853cefd25e3cc18d9c8e93", "sha256": "982a056efea0134810c65f6bab50eb8c698655c234e6c44ea272a2bb48e3d424" }, "downloads": -1, "filename": "Pysher-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ae17e10f53853cefd25e3cc18d9c8e93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11220, "upload_time": "2018-09-08T10:38:15", "url": "https://files.pythonhosted.org/packages/7d/60/c224e936411a07268c11887039aedd3bb8d7ee735e72d2b5c8d739d21b30/Pysher-1.0.3-py3-none-any.whl" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "69cba7df5e164d33d423b99fe7da4114", "sha256": "2ae3a21a8fadcdc7ab88f59f7f5ebc270338bf2f194eaa0c3462efc6c08560d5" }, "downloads": -1, "filename": "Pysher-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "69cba7df5e164d33d423b99fe7da4114", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11209, "upload_time": "2018-09-29T18:07:33", "url": "https://files.pythonhosted.org/packages/0e/ca/0e4b7d71944e6244da5fdccca51bb49e047fe295925e899776b919f6e638/Pysher-1.0.4-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "69cba7df5e164d33d423b99fe7da4114", "sha256": "2ae3a21a8fadcdc7ab88f59f7f5ebc270338bf2f194eaa0c3462efc6c08560d5" }, "downloads": -1, "filename": "Pysher-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "69cba7df5e164d33d423b99fe7da4114", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11209, "upload_time": "2018-09-29T18:07:33", "url": "https://files.pythonhosted.org/packages/0e/ca/0e4b7d71944e6244da5fdccca51bb49e047fe295925e899776b919f6e638/Pysher-1.0.4-py3-none-any.whl" } ] }