如何在python烧瓶中设置http请求超时

时间:2014-04-17 22:36:54

标签: flask

如何使用Python Flask设置请求超时?我试图将Flask与其他框架进行比较,并且需要将超时配置为等效。

谢谢!

2 个答案:

答案 0 :(得分:1)

WSGI服务器

Flask服务器仅用于创建服务器的逻辑。运行时,Flask应用程序应该是WSGI服务器的服务器。最常见的是 uWSGI (& nGinx ,就像外部世界和服务器之间的外观一样)
但是你可以使用最适合你的WSGI服务器(nichol.as/benchmark-of-python-web-servers)

有用的教程:

注意:

为什么要使用WSGI服务器?

一个重要原因:Flask本身无法同时处理多个请求。另一方面,WSGI服务器(包括uWSGI)能够将Flask应用程序分成多个子进程并将传入的请求传播给它们。它关心其他有用的东西

答案 1 :(得分:0)

正如Martijn Pieters在对问题的评论中所说,这不是您要做的事情,因为Flask开发服务器不是生产的好选择。最好在Gunicorn之类的服务器上运行flask应用程序,然后在该服务器上设置超时。

但是无论如何要回答这个问题,Flask.run有一个options参数,允许您将选项传递到底层的Werkzeug服务器:

run(host=None, port=None, debug=None, load_dotenv=True, **options)

relevant werkzeug method依次具有request_handler参数,您可以使用该参数指定要使用的请求处理程序:

werkzeug.serving.run_simple(hostname, port, application, use_reloader=False, use_debugger=False, use_evalex=True, extra_files=None, reloader_interval=1, reloader_type='auto', threaded=False, processes=1, request_handler=None, static_files=None, passthrough_errors=False, ssl_context=None)

这是您提供实现所需超时策略的请求处理程序对象的钩子(此问题探讨的主题:How to implement Timeout in BaseHTTPServer.BaseHTTPRequestHandler Python)。