Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Pusher websocket client for python, based on Erik Kulyk's PythonPusherClient

Project description

PyPI version

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.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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for inscribe-Pysher, version 1.0.3
Filename, size File type Python version Upload date Hashes
Filename, size inscribe-Pysher-1.0.3.tar.gz (8.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page