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.
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 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')
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).
A big thanks to @ekulyk for developing the PythonPusherClient library.
MTI License - See LICENSE for details.
- #38 Fix missing
ẁsarg for websocket app callbacks, thanks to @squgeim
- #35 Support websocket-client >0.48 only and fix reconnect error, thanks to @agronholm
This change may break existing setups and is backwards-incompatible!
- #14 Added support for cluster configuration, thanks to @Yvictor
- #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
- #11 Global Logger settings no longer overridden in Connection logger
- #8 Add support for WebSocket over HTTP proxy, thanks to @1tgr
- #7 Auto-resubscribe to channels after reconnecting, thanks to @pinealan
- #4, #5 Updated references to the library name, thanks to @deanmaniatis