On 2023-10-22 7:35 PM, Dieter Maurer via Python-list wrote:

The web server in Python's runtime library is fairly simple,
focusing only on the HTTP requirements.

You might want additional things for an HTTP server
exposed on the internet which should potentially handle high trafic:
e.g.

  * detection of and (partial) protection against denial of service attacks,
  * load balancing,
  * virtual hosting
  * proxing
  * URL rewriting
  * high throughput, low latency

Depending on your requirements, other web servers might be preferable.

Dieter's response was very timely for me, as it provides some answers to a question that I was thinking of posting. My use-case is reasonably on-topic for this thread, so I won't start a new one, if that is ok.

I am writing a business/accounting application. The server uses Python and asyncio, the client is written in Javascript. The project is inching towards a point where I may consider releasing it. My concern was whether my home-grown HTTP server was too simplistic for production, and if so, whether I should be looking into using one of the more established frameworks. After some brief investigation into Dieter's list of additional requirements, here are my initial thoughts. Any comments will be welcome.

I skimmed through the documentation for flask, Django, and FastAPI. As far as I can tell, none of them address the points listed above directly. Instead, they position themselves as one layer in a stack of technologies, and rely on other layers to provide additional functionality. If I read this correctly, there is nothing to stop me doing the same.

Based on this, I am considering the following -

1. Replace my HTTP handler with Uvicorn. Functionality should be the same, but performance should be improved.

2. Instead of running as a stand-alone server, run my app as a reverse-proxy using Nginx. I tested this a few years ago using Apache, and it 'just worked', so I am fairly sure that it will work with Nginx as well. Nginx can then provide the additional functionality that Dieter has mentioned.

My main concern is that, if I do release my app, I want it to be taken seriously and not dismissed as 'Mickey Mouse'. Do you think the above changes would assist with that?

When I talk about releasing it, it is already available on Github here - https://github.com/FrankMillman/AccInABox.

You are welcome to look at it, but it needs a lot of tidying up before it will be ready for a wider audience.

Frank Millman

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to