Skip to content

tatsuya4649/fly

Repository files navigation

fly

python pypi

fly is lightweight web application framework. This is a library with Python, but all the core parts of the server are implemented in C language to speed up.

  • Event driven architecture. (non-blocking network I/O)

  • Usable as Web server and Application server.

  • Lightweight and fast.

  • Since fly as a server by itself, there is no need to prepare a WSGI server or ASGI server.

fly currently supports the following platforms.

Python Linux macOS FreeBSD
3.6 Test Test -
3.7 Test Test Test
3.8 Test Test Test
3.9 Test Test Test
3.10 Test Test Test

Install

$ pip install fly-server

Hello World

It is so easy to use fly.

  1. import fly and make fly instance.

  2. mount directory and registery route.(option)

  3. run fly.

from fly import Fly

app = Fly()

@app.get("/")
def index(request):
    return "Hello, fly!"
$ fly app.py
Result

    * fly Running on 0.0.0.0:1234 (Press CTRL+C to quit)
    * fly 1 workers
    * Application file: /home/user/app.py
    * Log to stdout: on
    * Log to stderr: off
    * Backlog count: 1024
    * Max response content length: 1048576
    * Max request content length: 1048576
    * Index path: index.html
    * SSL: False
    * Log directory path: -
    * Mount paths (/home/user/mnt,/home/user/mnt2)
        - /home/user/mnt: files 2, mount_number 0
        - /home/user/mnt2: files 0, mount_number 1


mount vs route
  • mount: use for static content(css, html, js)

  • route: use for dynamic content(like CGI)

Why fly ?

Interface of fly is as simple as possible. Extracted only the necessary parts as Web framework by referring to various Python web frameworks.

But, a core part of fly is implemented by C language, you can't think of it as Python Web framework.

So, if you're looking for flexible and fast Web framework, should use fly.

How fast ?

look at the result of benchmark.

HTTP version

HTTP1.1, HTTP1.1 over TLS/SSL, HTTP2 over TLS/SSL.

Contributing

Let's coding.

  1. Fork fly.
  2. Create a feature branch. (git checkout -b new-feature)
  3. Commit your changes. (git commit -m explain of commit)
  4. Push to the bench. (git push origin my-new-feature)
  5. Create new pull request.

Dependencies

  • Python >= 3.6

  • Openssl >= 1.1.11

  • Zlib >= 1.2.11

  • libbrotli(Optional) >= 1.0.9