Record and replay ASGI web page loads
Project description
asgi-replay
A tool for recording and replaying requests using ASGI.
Very early prototype
This is an early prototype. I have used this tool exactly once.
Installation
pip install asgi-replay
Usage
The tool provides two commands - one for recording logs of ASGI requests and one for running a server to replay them.
Recording
asgi-replay record https://www.example.com log.json --port 8000
This runs a local server on port 8000
that proxies content through to www.example.com
- and logs each request to log.json
.
The log.json
file will be over-written for each request. This tool is mainly designed for capturing a single HTTP interaction.
If you add --increment
a new file will be written for each request, starting with log-0.json
and then log-1.json
and so on.
Replaying
To replay a single log - such that any HTTP request to the local server will replay that exact response - run this:
asgi-replay replay log.json --port 8000
(8000 is the default port for both commands.)
What I built this for
I wanted to build a tiny application that could simulate the streaming response from an OpenAI completion endpoint.
The app I built is here: https://github.com/simonw/openai-canned-completion
You can hit it using LLM like this:
OPENAI_API_KEY='x' \
OPENAI_API_BASE='https://openai-canned-completion.vercel.app/v1' \
llm 'hello'
I first ran the following on my own machine:
asgi-replay record https://api.openai.com log.json --port 8000
Then:
OPENAI_API_BASE='http://localhost:8000/v1' \
llm 'hello'
This ran a real request against OpenAI and saved the response in log.json
.
Then I ran the replay like this:
asgi-replay record https://api.openai.com log.json --port 8000
And when I ran the llm
command again I got the same response, without hitting the OpenAI API:
OPENAI_API_BASE='http://localhost:8000/v1' \
llm 'hello'
Hello! How can I assist you today?
I copied the saved ASGI logs into this ASGI app: https://github.com/simonw/openai-canned-completion/blob/main/canned.py
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
Built Distribution
File details
Details for the file asgi-replay-0.1a0.tar.gz
.
File metadata
- Download URL: asgi-replay-0.1a0.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3721a22aa3a0c207cc2d70c9f9865c91e786686d6475e958a13dd61b6acb910f |
|
MD5 | 7182ddd1016c91dcf76c7af187d7a180 |
|
BLAKE2b-256 | e5e891358cb41bc2eb1861927fa8376bc622c3d3bfc402081a5f180969ff7ebf |
File details
Details for the file asgi_replay-0.1a0-py3-none-any.whl
.
File metadata
- Download URL: asgi_replay-0.1a0-py3-none-any.whl
- Upload date:
- Size: 3.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe48bac162e73a96d1e9232287aa5a3bbed55f73cda9af121e922aad7c6a4c37 |
|
MD5 | 06a7e08f375166474e996b574a4e9227 |
|
BLAKE2b-256 | f0e41c8fe2155bb9317e0702fdd4e3655083908cd637652efdaa38e3224be819 |