Async Server
This project is an asynchronous server built using Python's asyncio.create_server,
designed for efficient request handling. It features a simple router-based request dispatcher,
static file serving, and logging configuration.
The server can handle both GET and POST requests and allows for easy route registration.
Features
- Async server powered by
asyncio.create_server - Customizable logging via log levels (debug, info, warning, error)
- Static file serving (optional)
- Simple router-based dispatching for request handling, configured in
locations.ini - Error handling for 404 (Not Found), 405 (Method Not Allowed), and 500 (Internal Server Error)
- Flexible configuration for host, port, and log levels
How to Run
Default Run
The server starts on 0.0.0.0:8079 by default. You can run the server with the following command:
python -m yapas
Custom Parameters
You can customize the server's host, port, static file path, and logging level with the following command-line options:
python -m yapas --host <host_ip> --port <port_number> --log_level <log_level>
Example
python -m yapas --host 127.0.0.1 --port 8080 --log_level info --use_proxy
Parameters:
host: IP address of the server (default:0.0.0.0)port: Port to bind the server to (default:8079)log_level: Logging level (debug,info,warning,error) (default:debug)use_proxy: use or not pre-set reverse proxy (seelocations.ini), ensurelocalhost:8000is listened, if this parameter is set
Error Handling
The server supports custom error handling for common HTTP errors:
404 Not Found: Raised if a route is not found.405 Method Not Allowed: Raised if the requested method is not supported by the route.500 Internal Server Error: Raised for any unhandled exceptions.
Static Content Management
- Basic in-memory caching is implemented for static content.
Signal Handling
- Server listens signals to gracefully terminate (
SIGTERM) or restart (SIGHUP).
Proxy support
- Server supports a basic reverse proxy feature to forward requests to another backend server,
retaining client headers such as
User-AgentandCookies.
Backlog
- SSL/TLS Support: Add HTTPS support using Python's built-in
sslmodule to enable secure communication over SSL/TLS. - Round Robin Load Balancing: Extend reverse proxying to support multiple backend servers with a round-robin load balancing algorithm for better distribution of incoming requests.
License
This project is licensed under the MIT License.
Metadata
Release files for yapas 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| yapas-0.1.0.tar.gz | 16.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yapas-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.6 kB
Release files / yapas-0.1.0.tar.gz
| Download URL | yapas-0.1.0.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0fd85d52b98588d4c98eea1a1db64951a9bc4bd6cfc7368839374b418ed22c52
|
|
BLAKE2b-256 checksum How to use checksums |
c811ff74b2f8363e73a2f344ae9208f7e38c48bfac92e6d24ba142067d60e606
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Release files / yapas-0.1.0-py3-none-any.whl
| Download URL | yapas-0.1.0-py3-none-any.whl |
|---|---|
| Size | 23.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ebe6592f962feba9583d11c2e33923e3fbf956d8424625ff446141a0f93469b8
|
|
BLAKE2b-256 checksum How to use checksums |
1111dd3188c4b8ff74f70991d9b366ac606deff9c0a92a7b7d600af477367811
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|