Skip to main content

Create a custom Session wrapped around the requests.Session

Project description

CSession

The csession package implements a simple wrapper class around the Session class of the requests module called CustomSession that give more freedom to the programmer to customize his session by for example setting a default timeout or headers.

Installation

pip install csession

Usage

The core of the package is the CustomSession class which mostly acts just like a normal Session

from csession import CustomSession

csess = CustomSession()

_ = csess.get("http://myurl.com")
_ = csess.post("http://myurl.com")

additionally, the CustomSesion accepts all the parameters for a request in the constructor to be set as default

from csession import CustomSession

csess = CustomSession(timeout=30, headers={'Content-type': 'application/json'})

# all upcoming requests will timeout after 30 seconds and have a Content-type json header

...

the CustomSession can also set a default prepare methode to manipulate the request before they are sent. This is for example useful for authentication purposes or url prefixing. Here is a example for a session that is prefixing every request and also adding a default password an appId to the json body of a request

from csession import CustomSession

config = {...}

# prepare function accepts methode url and params and also returns those again
# params are formatted as a dict
def prepare_microlog_request(methode, url, params):
    url = "https://my-default-url_prefix"+ url
    params["json"] = dict(params["json"], **{
        'appId': config['APP_ID'],
        'password': config['PASSWORD'],
    })
    return methode, url, params


# Use this Session to make requests to microlog
csess = CustomSession(
    timeout=100,
    headers={'Content-type': 'application/json'},
    prepare=prepare_microlog_request
)

csess.get("/path/to/endpoint")

if for a single call the prepare methode should be suppressed you can do:

from csession import CustomSession
csess = CustomSession(prepare=...)

csess.use_prepare = False
csess.get("http://www.url_without_prepare.com")
csess.use_prepare = True

or equivalently use the provided context manager:

from csession import CustomSession, without_preparation
csess = CustomSession(prepare=...)

with without_preparation(csess) as sess:
    sess.get("http://www.url_without_prepare.com")

The CustomSession also provides a simple history function in for of a deque. History is deactivated by default but can be activated in the constructor by setting save_last_requests=

from csession import CustomSession, without_preparation

csess = CustomSession(save_last_requests=3) # the last 3 requests are stored

csess.get("http://www.myurl.com")

print(csess.history)

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

csession-0.1.4.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

csession-0.1.4-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file csession-0.1.4.tar.gz.

File metadata

  • Download URL: csession-0.1.4.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.10

File hashes

Hashes for csession-0.1.4.tar.gz
Algorithm Hash digest
SHA256 dd20b6c19e77c44444231cddf8876c10d90b6c4f334d3be05c1e94acb9b14c73
MD5 d24f87cb4688be981ba066a2e00379d8
BLAKE2b-256 82a5c99b665c5350b58886a1423d802e8ff5a31ce911d2b50c6eb88dbecf59b8

See more details on using hashes here.

File details

Details for the file csession-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: csession-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.10

File hashes

Hashes for csession-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 066a41edb5a11625bf78d31b23b992b98445441fd6c0361b84474fbbe8fae428
MD5 959d5b435e23e66e5e1781a2b2296e5b
BLAKE2b-256 8a1f166302285c89df400b8e2a96ac48bba9b7682332bfb8bcb13deebd7c78bf

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