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
Hashes for asgi_replay-0.1a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe48bac162e73a96d1e9232287aa5a3bbed55f73cda9af121e922aad7c6a4c37 |
|
MD5 | 06a7e08f375166474e996b574a4e9227 |
|
BLAKE2b-256 | f0e41c8fe2155bb9317e0702fdd4e3655083908cd637652efdaa38e3224be819 |