On Wed, 25 Oct 2023 at 19:00, Frank Millman via Python-list <python-list@python.org> wrote: > 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.
This, I would recommend. In general, tools like Django and Flask and such are aimed at the creation of web apps, but not necessarily web servers; it's convenient to have a high-performance web server like Nginx or Apache, and then it passes along requests to the application server. This provides a number of benefits: 1. Static files can be served directly, without involving the app 2. Need to scale horizontally? Run two or more copies of your app and have the web server share requests among them. 3. App crashed? The web server can return an HTTP 503 error so end users aren't left wondering what's going on. 4. DOS protection can be done in the web server (although it could also be done in a firewall, or any other level that's appropriate) > 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? You shouldn't be dismissed as Still-In-Copyright-Decades-Old-Rodent even if you don't make those changes. I've been hosting a number of servers, some fairly home-grade, and nobody's ever told me that it looks bad. If you want to be respected, the main thing is to have something that people find interesting - everything else is secondary. But there are a few points to consider: * Performance. People respect something that's snappy and responsive more than they respect something where a single HTTP request takes anywhere from 2.89 seconds to nearly 30 seconds. And no, I'm totally not still mindblown at having seen this kind of appalling performance from a published and very expensive API. * Have your own domain name. https://rosuav.github.io/AntiSocialMedia/ is a toy; https://devicat.art/ is a professional web site. (They're not related, and the first one really is just a toy that I whipped up in like half an hour.) * Have a proper SSL certificate. It looks *really bad* to have a broken or outdated certificate (or none at all, these days). LetsEncrypt can do that for you, no charge. * Put some effort into styling. Yeah, I know, most of my web sites are ugly, so I shouldn't talk. But things definitely look more professional if you take the time to style them up a bit. > 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. Cool! This is particularly of note to me personally. Back in the 90s, I was working in the family business, and we used a fairly clunky piece of professionally-written software (and if you want stories, ask me about overnight runs of report generation, or Ctrl-Alt-Shift and old mouse pedal importing, or 32-bit installers for 16-bit applications, or a bunch of other things). There was, for a while, a theory of us designing our own accounting system, but it turns out, that's a really REALLY big job, and it's less effort to keep using the thing you already have. Your README, dating from 9 years ago, says that you support/require Python 3.4 - that's kinda ancient now. If you want to take advantage of newer features, I think you should be safe bumping that up a long way. :) I wouldn't recommend sqlite3 for any production work here, but it's good for a demo. Postgres is a far better choice if you're going to be storing your vital information in this. You can list vital packages in a file called requirements.txt - this will be recognized by both people and automated tooling. .... huh. I'm listed as a contributor. I'll be quite honest, I do not remember this, but presumably you shared this previously! Looks like all I contributed was a minor suggestion and commit, but still, I have absolutely no memory. LOL. Looks pretty good there. I don't have time right now to download and install it for a proper test, but based on flipping through the code, looks like you have something decent going on. ChrisA -- https://mail.python.org/mailman/listinfo/python-list