Pusher websocket client for python, based on deepbrook's fork of Erik Kulyk's PythonPusherClient
Project description
Pysher
pysherplus
is a python module for handling pusher websockets. It is based on @deepbrok's fork of @ekulyk's PythonPusherClient
.
You can check out the deepbrook fork here. Deepbrook's code was in maintenance mode, and I wanted a more actively maintained project with a few bug fixes to use in a project.
New features
- Subscription status of channels is automatically maintained and can be setup before connection.
- Authorization support for known secret, url based (such as Laravel), and even custom websocket authentication.
- Better support for custom URLs using the PusherHost class.
Installation
Install via pip pip install pysherplus
.
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:
import sys
import time
from pysherplus.pusher import Pusher
# 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)
app_key = "my_pusher_app_key"
pusher = Pusher(app_key)
def my_func(event, data):
print("processing Event:", event)
print("processing Data:", data)
pusher["my_channel"]["my_event"].register(my_func)
pusher.connect()
while True:
# Do other things in the meantime here...
time.sleep(1)
Performance
PysherPlus relies on websocket-client (websocket-client on pyPI, websocket import in code), which by default does utf8 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
Huge thanks to @deepbrook for forking the original repo and by proxy, thank you to all of the people who they thanked.
Copyright
MTI License - See LICENSE for details.
Changelog
Version 2.0.0
Forked and refactored @deepbrook's code and republished under PysherPlus name.
For previous versions, see the original repo's changelog
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file PysherPlus-2.0.1.tar.gz
.
File metadata
- Download URL: PysherPlus-2.0.1.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a314514de90f4012c0c9c1d2bd3234767324711cacde5d530eae870ed290066e |
|
MD5 | b0125b4d53dd7a71cf0ee6e0b57b1adb |
|
BLAKE2b-256 | 8f9cd5fccd638db81b714f4befd73a6cf51e202f60aa90fad367c73dff2446ac |
File details
Details for the file PysherPlus-2.0.1-py3-none-any.whl
.
File metadata
- Download URL: PysherPlus-2.0.1-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8aebeaca27a07b83d672257fa05435e6a49679f84d73aaee5321e2e442c138b0 |
|
MD5 | 941a97daeffe441f4614dd665fb57e56 |
|
BLAKE2b-256 | b8363172e4056fec10f7dadf9d17e64ed054b5d9810de73ea0e1456eef501356 |