Simple Python cache/caching proxy for Web development and something else
Project description
CacheProxy
A simple Python cache/caching proxy for Web development and something else, built on aiohttp and aiohttp-client-cache (a family project of requests-cache).
Useful to avoid unfavorable massive accesses to external APIs during development, with little change, without preparing mocks. Not recommended for production.
Install
pip install cacheproxy
Usage
1. Start up proxy
$ cacheproxy sqlite -c ./cache --expire-after 1800
Cache database: /Users/nolze/src/cacheproxy/cache.sqlite
======== Running on http://0.0.0.0:8080 ========
(Press CTRL+C to quit)
Other backends:
cacheproxy # in-memory
cacheproxy memory # in-memory
cacheproxy file -c ./cache # file-based, saved under ./cache/
cacheproxy sqlite -c ./cache # sqlite, saved to ./cache.sqlite
2. Access through proxy
cURL:
curl http://0.0.0.0:8080/api.github.com/repos/nolze/cacheproxy # This request is cached until the expiration time
# → {"id":...,"node_id":"...","name":"cacheproxy", ...
Python (requests):
import requests
base_url = "http://0.0.0.0:8080/api.github.com" # Just replace with "https://api.github.com" on production
resp = requests.get(f"{base_url}/repos/nolze/cacheproxy") # or use urljoin()
print(resp.json())
# → {'id': ...., 'node_id': '....', 'name': 'cacheproxy', ...
JavaScript/Node:
const baseURL = "http://0.0.0.0:8080/api.github.com"; // Just replace with "https://api.github.com" on production
const resp = await fetch(`${baseURL}/repos/nolze/cacheproxy`);
const data = await resp.json();
console.log(data);
// → Object { id: ..., node_id: "...", name: "cacheproxy", ...
Interact with or modify cached data
Use aiohttp-client-cache to load existing databases.
See also:
Todos
- Better error handling
- Write tests
- Better logging
- Support POST/PUT
- Support switching http/https (with --http/--https flags)
- Support DynamoDB, MongoDB, and Redis backends
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cacheproxy-0.1.0.tar.gz
(5.1 kB
view details)
Built Distribution
File details
Details for the file cacheproxy-0.1.0.tar.gz
.
File metadata
- Download URL: cacheproxy-0.1.0.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.8 Darwin/21.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98001fd7139e894c97ac3a56c5f2b94447c5e4feea6335fcb5d4c60cf31fb9ed |
|
MD5 | 9b361b63ca3994d6c48ddb50b6171eab |
|
BLAKE2b-256 | 993b4f560ccabfc6b010c2ad7b4ed64e3da60fa063de4fabf67e6a4e503ff5cb |
File details
Details for the file cacheproxy-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: cacheproxy-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.8 Darwin/21.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0a0f82cc75188de608b465735baa3fd4232f5968fd1d5cb1e0090ce9a4c91c1 |
|
MD5 | c5f2b9bcd97236ed7ee376fbc8e7fae5 |
|
BLAKE2b-256 | 9e0e71c46986d1f35c5c26d768bbb2ec72a639ff1cd8f59ab2f92b73df6ca5af |