Skip to main content

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

Project description

Fork of https://github.com/deepbrook/Pysher with python2 support

PyPI version

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:

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

Version 1.0.6

Fixed

  • #55 Allow data fields to be empty for other events, too, thanks to @Rubensei

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


Download files

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

Source Distribution

pysher_khonik-1.0.8.tar.gz (12.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pysher_khonik-1.0.8-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

Pysher_Khonik-1.0.8-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file pysher_khonik-1.0.8.tar.gz.

File metadata

  • Download URL: pysher_khonik-1.0.8.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pysher_khonik-1.0.8.tar.gz
Algorithm Hash digest
SHA256 08d1a78ff441dc9e540bd8a3322d526e81e95842a9f35bb67e88d0ce5e4a8b0d
MD5 3c227ebca61d58e1151c1ec6f7f80260
BLAKE2b-256 e30cf84328d9c82e36ae555dfcd5aeeeca83fd3a5580ba7aef8b4cf9b0678a65

See more details on using hashes here.

File details

Details for the file pysher_khonik-1.0.8-py3-none-any.whl.

File metadata

  • Download URL: pysher_khonik-1.0.8-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for pysher_khonik-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 5f31cf8000bdf856a99578634bfbdb53f2bc05d620ae4e9914c29a8305c8b807
MD5 db5fe53f17807bd46ab8e33dc0041276
BLAKE2b-256 59d8051e7cc334dc7cac4903633d7c921c8498a086e6ac3ec3d5fd3dc18ac284

See more details on using hashes here.

File details

Details for the file Pysher_Khonik-1.0.8-py3-none-any.whl.

File metadata

  • Download URL: Pysher_Khonik-1.0.8-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for Pysher_Khonik-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 d1b186fc0183e9806dc8cbaca8641006e4984b80d5a9734e50c486be30e6640f
MD5 194b911314884ff21baa85a22d4ea823
BLAKE2b-256 a38220e6e174dc7883dbb4b8a45764f3e4ad088aaf64bcd0bf765fb5a96015a7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page