pysher-khonik


Namepysher-khonik JSON
Version 1.0.11 PyPI version JSON
download
home_pagehttps://github.com/khorevnikita/Pysher
SummaryPusher websocket client for python, based on Erik Kulyk's PythonPusherClient with Python2 support
upload_time2024-11-08 17:20:59
maintainerNone
docs_urlNone
authorNikita Khorev
requires_pythonNone
licenseMIT
keywords pusher websocket client
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Fork of https://github.com/deepbrook/Pysher with python2 support

[![PyPI version](https://badge.fury.io/py/Pysher.svg)](https://badge.fury.io/py/Pysher)

# Pysher

`pysher` is a python module for handling pusher websockets. It is based on @ekulyk's `PythonPusherClient`. 
 A key difference is the dropped support for pre-3.5 Python versions.

This fork is meant as a continuation of the project, and is currently in **maintenance mode**.

The author is no longer actively using the library, but PRs including fixes, updates and features
are welcome and encouraged.

## Installation

Simply run `python setup.py install` - or install via pip `pip install pysher`.

This module depends on websocket-client module available from: <http://github.com/websocket-client/websocket-client>

## Example

Example of using this pusher client to consume websockets:

```python

import pysher

# Add a logging handler so we can see the raw communication data
import logging

root = logging.getLogger()
root.setLevel(logging.INFO)
ch = logging.StreamHandler(sys.stdout)
root.addHandler(ch)

pusher = pysher.Pusher(appkey)


def my_func(*args, **kwargs):
 print("processing Args:", args)
 print("processing Kwargs:", kwargs)


# We can't subscribe until we've connected, so we use a callback handler
# to subscribe when able
def connect_handler(data):
 channel = pusher.subscribe('mychannel')
 channel.bind('myevent', my_func)


pusher.connection.bind('pusher:connection_established', connect_handler)
pusher.connect()

while True:
 # Do other things in the meantime here...
 time.sleep(1)
```

Sending pusher events to a channel can be done simply using the pusher client supplied by pusher.  You can get it here: <https://github.com/pusher/pusher-http-python>

    import pusher
    pusher.app_id = app_id
    pusher.key = appkey

    p = pusher.Pusher()
    p['mychannel'].trigger('myevent', 'mydata')
    
## Performance
Pysher 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).

## Thanks
A big thanks to @ekulyk for developing the [PythonPusherClient](https://github.com/ekulyk/PythonPusherClient) library,
as well as the developers contributing bug-fixes, patches and other PRs to the project <3.
You can find them listed next to their contributed change in the Changelog section.

## Copyright

MTI License - See LICENSE for details.

# Changelog
## Version 1.0.8
### Fixed
 - #70 Allow remote authentication without need of secret, thanks to @[Matisilva](https://github.com/matisilva)

## Version 1.0.6
### Fixed
 - #55 Allow data fields to be empty for other events, too, thanks to @[Rubensei](https://github.com/Rubensei)

## Version 1.0.5
### Fixed
 - #53 Allow data fields to be empty, thanks to @[Rubensei](https://github.com/Rubensei)

## Version 1.0.4
### Fixed
 - Reverts a patch introduced in 1.0.3 

## Version 1.0.2
### Fixed
 - #38 Fix missing `ẁs` arg for websocket app callbacks, thanks to @[squgeim](https://github.com/squgeim)

## Version 1.0.0
### Updated
- #35 Support websocket-client >0.48 only and fix reconnect error, thanks to @[agronholm](https://github.com/agronholm)

**This change may break existing setups and is backwards-incompatible!**

## Version 0.5.0
### Added
 - #14 Added support for cluster configuration, thanks to @[Yvictor](https://github.com/Yvictor)

### Fixed
 - #30 Require websocket-client version 0.48 or earlier.
 - #24 Signature generation now works as expected, thanks to @[agronholm](https://github.com/agronholm)
 - #31 Name threads of the pysher lib for better debugging, thanks to @[caliloo](https://github.com/caliloo)

## Version 0.4.2
### Fixed:
 - #11 Global Logger settings no longer overridden in Connection logger

## Version 0.4.0
### Added:
 - #8 Add support for WebSocket over HTTP proxy, thanks to @[1tgr](https://github.com/1tgr)

## Version 0.3.0
### Added:
 - #7 Auto-resubscribe to channels after reconnecting, thanks to @[pinealan](https://github.com/pinealan)

### Fixed:
- #4, #5 Updated references to the library name, thanks to @[deanmaniatis](https://github.com/deanmaniatis)

## Version 0.2.0  
### Added:
- #2 Allow for token generated by auth endpoint, thanks to @[wardcraigj](https://github.com/wardcraigj)
- #3 Allow instantiation with custom host, thanks to @[wardcraigj](https://github.com/wardcraigj)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/khorevnikita/Pysher",
    "name": "pysher-khonik",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "pusher websocket client",
    "author": "Nikita Khorev",
    "author_email": "khonikdev@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/32/37/d05bd771d789cb52ce2529ddda4dbe5d10d4b5a1b10ece2a169bcd18fcb7/pysher_khonik-1.0.11.tar.gz",
    "platform": null,
    "description": "# Fork of https://github.com/deepbrook/Pysher with python2 support\n\n[![PyPI version](https://badge.fury.io/py/Pysher.svg)](https://badge.fury.io/py/Pysher)\n\n# Pysher\n\n`pysher` is a python module for handling pusher websockets. It is based on @ekulyk's `PythonPusherClient`. \n A key difference is the dropped support for pre-3.5 Python versions.\n\nThis fork is meant as a continuation of the project, and is currently in **maintenance mode**.\n\nThe author is no longer actively using the library, but PRs including fixes, updates and features\nare welcome and encouraged.\n\n## Installation\n\nSimply run `python setup.py install` - or install via pip `pip install pysher`.\n\nThis module depends on websocket-client module available from: <http://github.com/websocket-client/websocket-client>\n\n## Example\n\nExample of using this pusher client to consume websockets:\n\n```python\n\nimport pysher\n\n# Add a logging handler so we can see the raw communication data\nimport logging\n\nroot = logging.getLogger()\nroot.setLevel(logging.INFO)\nch = logging.StreamHandler(sys.stdout)\nroot.addHandler(ch)\n\npusher = pysher.Pusher(appkey)\n\n\ndef my_func(*args, **kwargs):\n print(\"processing Args:\", args)\n print(\"processing Kwargs:\", kwargs)\n\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\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: <https://github.com/pusher/pusher-http-python>\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    \n## Performance\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\n## Thanks\nA big thanks to @ekulyk for developing the [PythonPusherClient](https://github.com/ekulyk/PythonPusherClient) library,\nas well as the developers contributing bug-fixes, patches and other PRs to the project <3.\nYou can find them listed next to their contributed change in the Changelog section.\n\n## Copyright\n\nMTI License - See LICENSE for details.\n\n# Changelog\n## Version 1.0.8\n### Fixed\n - #70 Allow remote authentication without need of secret, thanks to @[Matisilva](https://github.com/matisilva)\n\n## Version 1.0.6\n### Fixed\n - #55 Allow data fields to be empty for other events, too, thanks to @[Rubensei](https://github.com/Rubensei)\n\n## Version 1.0.5\n### Fixed\n - #53 Allow data fields to be empty, thanks to @[Rubensei](https://github.com/Rubensei)\n\n## Version 1.0.4\n### Fixed\n - Reverts a patch introduced in 1.0.3 \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\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",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Pusher websocket client for python, based on Erik Kulyk's PythonPusherClient with Python2 support",
    "version": "1.0.11",
    "project_urls": {
        "Homepage": "https://github.com/khorevnikita/Pysher"
    },
    "split_keywords": [
        "pusher",
        "websocket",
        "client"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dfa875c7103909eacfd7a89f58230e17dbd3399af47944f24c4135f3d493d418",
                "md5": "15ce4d0acdf98ea04117df826b5ddc82",
                "sha256": "c6ca740ca034510912a6ffae978cc36ad9138136da3ad2e8383867d204fa70a9"
            },
            "downloads": -1,
            "filename": "pysher_khonik-1.0.11-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "15ce4d0acdf98ea04117df826b5ddc82",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 8666,
            "upload_time": "2024-11-08T17:20:57",
            "upload_time_iso_8601": "2024-11-08T17:20:57.474355Z",
            "url": "https://files.pythonhosted.org/packages/df/a8/75c7103909eacfd7a89f58230e17dbd3399af47944f24c4135f3d493d418/pysher_khonik-1.0.11-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3237d05bd771d789cb52ce2529ddda4dbe5d10d4b5a1b10ece2a169bcd18fcb7",
                "md5": "603d9cedbcb2bd1f61f61f61890991db",
                "sha256": "15bbc2f6952c149e5d337298fcb05ab68d41647285a9ef286bb4d481a863fdb1"
            },
            "downloads": -1,
            "filename": "pysher_khonik-1.0.11.tar.gz",
            "has_sig": false,
            "md5_digest": "603d9cedbcb2bd1f61f61f61890991db",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 10579,
            "upload_time": "2024-11-08T17:20:59",
            "upload_time_iso_8601": "2024-11-08T17:20:59.352445Z",
            "url": "https://files.pythonhosted.org/packages/32/37/d05bd771d789cb52ce2529ddda4dbe5d10d4b5a1b10ece2a169bcd18fcb7/pysher_khonik-1.0.11.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-08 17:20:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "khorevnikita",
    "github_project": "Pysher",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pysher-khonik"
}
        
Elapsed time: 0.35009s