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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd20b6c19e77c44444231cddf8876c10d90b6c4f334d3be05c1e94acb9b14c73 |
|
MD5 | d24f87cb4688be981ba066a2e00379d8 |
|
BLAKE2b-256 | 82a5c99b665c5350b58886a1423d802e8ff5a31ce911d2b50c6eb88dbecf59b8 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 066a41edb5a11625bf78d31b23b992b98445441fd6c0361b84474fbbe8fae428 |
|
MD5 | 959d5b435e23e66e5e1781a2b2296e5b |
|
BLAKE2b-256 | 8a1f166302285c89df400b8e2a96ac48bba9b7682332bfb8bcb13deebd7c78bf |