Skip to main content

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

Metadata

Release files for elytica-pysher 1.0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for elytica-pysher 1.0.7
File Size Uploaded
elytica-pysher-1.0.7.tar.gz 9.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for elytica-pysher 1.0.7
File Interpreter ABI Platform
elytica_pysher-1.0.7-py3.9.egg Legacy Egg format - - Details
elytica_pysher-1.0.7-py3-none-any.whl Python 3 none any Details

Total release size: 56.2 kB

Release files / elytica-pysher-1.0.7.tar.gz

Download URL elytica-pysher-1.0.7.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a4790b18c907b39201a525e137738b124b258141712a30dfc637c2b6f6d5831b
BLAKE2b-256 checksum
How to use checksums
3bea8844697de114c5c74f3eb157ca2750c312d6a71efb92aacdc41800841098
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.2.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.3

Release files / elytica_pysher-1.0.7-py3.9.egg

Download URL elytica_pysher-1.0.7-py3.9.egg
Size 31.4 kB
Tags Egg
SHA-256 checksum
How to use checksums
a12fd1d817b97dc2af0b84ed9e5cd382f0e451f2f7dc3e9306adc07e0d8280d5
BLAKE2b-256 checksum
How to use checksums
483e8223cd7b893976182ad5e55e1031475161410408b2a95cc7bffaaf33de55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.2.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.3

Release files / elytica_pysher-1.0.7-py3-none-any.whl

Download URL elytica_pysher-1.0.7-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b3867fbe15ca5bacdaccfcbff0243ed7fc332e1224abd0fca8b38b39cc6500b0
BLAKE2b-256 checksum
How to use checksums
479ced8904e1f80920da7cbdbe76b12b6661665767f398f9ae69101e714f10ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.2.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.3

Release history Release notifications | RSS feed

This release

1.0.7 This release

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page