Skip to main content

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 (see locations.ini), ensure localhost:8000 is 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-Agent and Cookies.

Backlog

  • SSL/TLS Support: Add HTTPS support using Python's built-in ssl module 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)

Source distribution for yapas 0.1.0
File Size Uploaded
yapas-0.1.0.tar.gz 16.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yapas 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page