Skip to main content

HTTP Server

Server which runs Hyper Text Transport Protocol

Check it out at PYPI

Schema

Server parameters

  1. config=Configurator Specify a configurator. Use FluentConfigurator for type hints or Configurator for plain text
  2. loglevel=LogLevel.logging Choose a logging or console form reporting
  3. refresh_rate=0.1 Socket connection refresh rate
  4. cache_max_size=4e9 Max cache size

Download

pip install ihttpy

Fluent Example

import ...
config = FluentConfigurator()

@config.on(Method.GET).at('/')
def index(req: Request, srv: Server)
    return Response(200, 'OK')

config._host = '0.0.0.0'
config._port = 8000
server = Server(config, loglevel=LogLevel.CONSOLE)
with server as s:
    s.run()

Running the tests

python3 -m unittests discover tests/

Plaintext Config settings

  1. rules Is a map with regular language

    • use square braces for any match (same as .*? in re)
    • type [name] inside braces to set named group
    • use match names in found path example:
      "/[day]-[n]/[month]/[year]" : "/pictures/[year]/[month]/[day]/[n].png
      
      query localhost:8000/27-me/09/2000 will display a photo /pictures/2000/09/27/me.png if exists
  2. host Chose server host

    • use localhost to run locally
  3. port Specify port for server to listen

    • default is 8000
  4. error-pages used by Errors class

Dynamic handlers configuration

if you want more handling control:

  • specify path field for static file response
  • use handler object description as
    • source to choose handler path
    • post name of function to handle POST request
    • get name of function to handle GET request
  • specify headers for additional headers to be added
  1. static file response localhost:8000/my_guest_book url

    "/my_guest_book": "tmp/my_guest_book.html",
    

    router will match this url and send file tmp/my_guest_book.html

  2. custom GET handler for localhost:8000/posts url

    "/posts": {
      "handler": {
        "source": "handlers/my_guest_book.py",
        "get": "get_posts"
      }
    }
    

    this will start loaded source handler search for url and call get_posts function

  3. custom POST handler for localhost:8000/post url

     "/post": {
       "handler": {
         "source": "handlers/my_guest_book.py",
         "post": "handle_post"
       }
     }
    

    it will call handle_post function from source found handler and process request in that module

Dynamic handlers usage

Handlers should be added as modules with 1 or 2 functions (which are configured if config.json as it was described in here)

Its signature needs to be

def function(request: Request, server: Server) -> Response:

Here you can use Server and Request that is being processed

Request structure:

  • self.method - request method (GET/POST)
  • self.target - url
  • self.version - HTTP version
  • self.headers - headers dictionary
  • self.body - request body

Use this properties as you need to process the request

Logging and debug

If you want std.out as primary output use -l console

If you want file as output use -l logging

There is a logger.py for server info logging and debug, configure LOGGER_PATH and LOG_DEBUG_PATH in defenitions.py

Author

Supervisor

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ihttpy-2.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ihttpy-2.1.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file ihttpy-2.1.0.tar.gz.

File metadata

  • Download URL: ihttpy-2.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for ihttpy-2.1.0.tar.gz
Algorithm Hash digest
SHA256 7f391b7bd07c5d1ad61192f3ecccdff7538cfab7f9a5ee6609c5bb67d0278b93
MD5 6c38288fee375226db46fe7bdfa1341e
BLAKE2b-256 c03492be29400c2598038aac3ae64adaa64b8bdb4c32a334b416df77a59ff630

See more details on using hashes here.

File details

Details for the file ihttpy-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: ihttpy-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for ihttpy-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2b19827eed81dd0f857634dd4b9932903375d8ae120531d876d2b299548376c6
MD5 a07177c5cd3754203c7a6d093ea7067f
BLAKE2b-256 21877b0b65d463d58d48f056c17b5798329414f74b17b733b95b08accceec7cd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 files

2.0.7

2 files

2.0.6

2 files

2.0.5

2 files

2.0.4

2 files

2.0.3

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page