Pusher websocket client for python, based on Erik Kulyk's PythonPusherClient
Project description
Pysher
pysher
is a python module for handling pusher websockets. It is based on @ekulyk's PythonPusherClient
. This fork is meant as
a continuation of the project and is actively maintained. A key difference is the dropped support for pre-3.5 Python versions.
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::
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 library.
Copyright
MTI License - See LICENSE for details.
Changelog
Version 1.0.5
Fixed
- #53 Allow data fields to be empty, thanks to @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
Version 1.0.0
Updated
- #35 Support websocket-client >0.48 only and fix reconnect error, thanks to @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
Fixed
- #30 Require websocket-client version 0.48 or earlier.
- #24 Signature generation now works as expected, thanks to @agronholm
- #31 Name threads of the pysher lib for better debugging, thanks to @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
Version 0.3.0
Added:
- #7 Auto-resubscribe to channels after reconnecting, thanks to @pinealan
Fixed:
- #4, #5 Updated references to the library name, thanks to @deanmaniatis
Version 0.2.0
Added:
- #2 Allow for token generated by auth endpoint, thanks to @wardcraigj
- #3 Allow instantiation with custom host, thanks to @wardcraigj
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
Hashes for Pysher-1.0.5.linux-x86_64.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fea6d9d2a01df0f9b8986a4164810c201696c3f9f66c8958022e60274f3f6885 |
|
MD5 | 0040814ba88e745ea7cd8a3cb88cfacc |
|
BLAKE2b-256 | a5d797ecf8aca05984150da9dda9af8db494443c426a19a7f8b3e09e0636f28f |