Skip to main content

Wrapper for sockets letting you limit send/recv bandwidth

Project description

Socket throttling for Python

This tiny library contains a wrapper for sockets that can be used to limit their send and/or receive rate to a specific value.

It can be used to limit the bandwidth use of any Python code that uses sockets.

Example:

import socket
from socket_throttle import LeakyBucket
from socket_throttle.sockets import SocketWrapper


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
sock.connect(('127.0.0.1', 5000))

# Short syntax, limit sending to 2kB/s and receiving to 100kB/s
sock = SocketWrapper(sock, send=2_000, recv=100_000)

# Longer syntax, create a bucket that can be shared by multiple sockets
# Receive speed is unlimited
send_bucket = LeakyBucket(100_000, 500_000)
sock = SocketWrapper(sock, send=send_bucket)

# It works with files too
from socket_throttle.files import FileWrapper

with open('data.bin', 'rb') as file:
    file = FileWrapper(file, read=100_000)
    file.read(...)

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

socket_throttle-0.2.0.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

socket_throttle-0.2.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file socket_throttle-0.2.0.tar.gz.

File metadata

  • Download URL: socket_throttle-0.2.0.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for socket_throttle-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a027f268f1f70fe0a1d83aeaf7a2e4e5c617d5ea2a5c726fe054127075d39e49
MD5 b1b67d2945ed98a70325cbcb519c4f7a
BLAKE2b-256 86c0cdbc5f70794e5023e920986e734305426fe4b4a33629edf2fc70def01236

See more details on using hashes here.

File details

Details for the file socket_throttle-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for socket_throttle-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5831d89fd5bdaa5a79ccfe07756238398f27746dc9be6e3ceb78d3941c0b17c9
MD5 ecdfc357b4544b524f5187cbdae1c2cd
BLAKE2b-256 ba86681301f4c49d42d519a7742a38d52eafc921fa937c3895f9c1ce0c8e72ba

See more details on using hashes here.

Supported by

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