Hi,

Thanks for your suggestions. I used wsgiref to implement a bare-bones 
server process. This is probably quite similar to the Flask dev server, but 
at least it doesn't emit a big fat warning about not using in production, 
which would make uninformed users uncomfortable. Since I'm running the 
server from the restricted environment, cygwin is not an option here, so no 
uwsgi.

Regards,
Tom

On Friday, 23 May 2025 at 00:40:20 UTC+2 Michael Merickel wrote:

The stdlib offers wsgiref.simple_server [1] which is single-threaded. You 
gave a flask example but it'll work fine for any wsgi app.

The example on https://trypyramid.com which I'll copy here will work for 
any wsgi app including flask.

from wsgiref.simple_server import make_server from pyramid.config import 
Configurator from pyramid.response import Response def hello_world(request): 
return Response('Hello World!') if __name__ == '__main__': with 
Configurator() as config: config.add_route('hello', '/') 
config.add_view(hello_world, route_name='hello') app = 
config.make_wsgi_app() server = make_server('0.0.0.0', 6543, app) 
server.serve_forever()

Pyramid also exposes a wsgiref entry point if you are using PasteDeploy 
such that you can use it from your INI file like:

[server:main]
use = egg:pyramid#wsgiref
host = 0.0.0.0
port = 8080

[1] 
https://docs.python.org/3/library/wsgiref.html#module-wsgiref.simple_server

On May 22, 2025, at 16:27, Jonathan Vanasco <[email protected]> wrote:

I can't speak to your Waitress questions, but uwsgi will build on windows 
with cygwin and can run multiple processes with single threads.  


On Thursday, May 22, 2025 at 4:48:06 PM UTC-4 Tom Hendrikx wrote:

Hi,

For a work project I'm building Python software that runs inside a rather 
limited environment. An upstream software supplier provides software that 
spawns a Python environment where I need to execute code that is not 
thread-safe. The upstream supplier did add some mechanics to allow thread 
safety, but it requires me to call some custom code from each newly spawned 
thread.

 The actual functionality that I need to run in the environment is a small 
Flask app. When running this app using the Flask builtin dev server, it 
only works when I disable threads using: flask_app.run(threaded=False).

Now I wanted to not use the Flask dev server but something a little more 
sophisticated. Enter waitress: it runs on Windows (hard requirement), it's 
simple and it can serve my Flask app directly from Python (no external 
servers like apache+mod_wsgi required). There is only a single client 
sending requests to the server, so performance/concurrency is not a 
requirement.

However, I cannot get waitress to run as a single thread. Settings 
threads=1 doesn't help (it's probably the master process + 1 task thread). 
I found a SO post [1] that suggests two options, but both don't work: 
setting the parameter "threaded" to False, but this parameter doesn't exist 
(in waitress 3.0.2), and setting "connection_limit" to 1, which renders the 
app unreachable. 

Running threaded would probably mean that I subclass 
the ThreadedTaskDispatcher to add the specific code from the supplier. 
Another option would be to create a non-threading Dispatcher myself from 
scratch, and use that. All that seems way too complicated.

Do you have advice for me? Can I even run waitress without threads? Where 
did the "threaded" parameter to the serve() function go, if it ever 
existed? Should I be looking at a different Python-only app server that I 
somehow didn't find in my searches, and works on Windows? Should I even 
bother and just use the Flask dev server?

[1] https://stackoverflow.com/a/78515009/2991260

Thanks for all knowledge you might be able to share

Kind regards,
Tom


-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an 
email to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/pylons-discuss/f1d3abc3-0f31-41b7-84dc-0febcf191228n%40googlegroups.com
 
<https://groups.google.com/d/msgid/pylons-discuss/f1d3abc3-0f31-41b7-84dc-0febcf191228n%40googlegroups.com?utm_medium=email&utm_source=footer>
.


-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/pylons-discuss/321bc1ca-69c2-4a59-b3e9-e4f9d050f0acn%40googlegroups.com.

Reply via email to