问题标签 [waitress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8093 浏览

python - Waitress 如何处理并发任务?

我正在尝试使用 Django 和 Waitress 构建一个 python 网络服务器,但我想知道 Waitress 如何处理并发请求,以及何时可能发生阻塞。


虽然Waitress 文档提到可以使用多个工作线程,但它并没有提供很多关于它们如何实现以及 python GIL 如何影响它们的信息(强调我自己的):

当通道确定客户端至少发送了一个完整的有效 HTTP 请求时,它会使用“线程调度程序”调度一个“任务”。线程调度程序维护一个固定的工作线程池,可用于执行客户端工作(默认情况下,4 个线程)。如果在调度任务时工作线程可用,则工作线程运行该任务。该任务可以访问通道,并且可以写回通道的输出缓冲区。当所有工作线程都在使用时,计划任务将在队列中等待工作线程可用。

Stackoverflow 上似乎也没有太多信息。从问题“Gunicorn 的 gthread 异步工作者是否类似于 Waitress?”

Waitress 有一个主异步线程来缓冲请求,并在请求 I/O 完成时将每个请求排入其同步工作线程之一。


这些陈述没有解决 GIL(至少从我的理解来看),如果有人能详细说明工作线程如何为 Waitress 工作,那就太好了。谢谢!

0 投票
1 回答
6123 浏览

python - 如何从作为 Windows pywin32 服务运行的烧瓶和女服务员中干净地退出

我已经设法拼凑了一个 pywin32 Windows 服务在 pylons 服务员 wsgi 服务器(下)内运行烧瓶的工作演示。一个侄女自给自足的解决方案就是这个想法。

我花了几个小时来审查和测试让女服务员干净地退出的方法(比如这个这个),但到目前为止我能做的最好的是一种自杀式的 SIGINT,它让 Windows 在通过服务控制停止时抱怨“管道已结束”面板,但至少它停止了:-/我猜 pywin32 启动的 pythonservice.exe 不应该终止,只是女服务员踩踏?

老实说,我仍然不确定这是关于女服务员、pywin32 还是只是普通的 python 的问题。我确实感觉答案就在我面前,但现在我完全被难住了。

欢迎任何建议!

0 投票
1 回答
383 浏览

python - 带有女服务员的烧瓶-获取请求标头返回无

仅使用带有 Python 的 Flask 服务器,以下获取请求有效:

但是,使用 Waitress 时,以下内容不起作用(image_id 为 None):

POST 和其他 GET 请求工作正常,只是 GET 带有不起作用的标头。有人有想法么?

0 投票
1 回答
454 浏览

multithreading - 如何使用 Flask 处理多个 HTTP 请求

我有一个关于 Flask、Waitress 和 HTTP 请求的并行处理的问题。

我读过 Flask一次只能处理一个 HTTP 请求。

在下表中,我列出了所有可能的配置,我希望得到您关于我可以并行处理的 HTTP 请求数量的反馈。

我问这些问题是因为一位同事告诉我,我们可以使用只有 1 个 CPU 和 1 个内核的 Apache 服务器处理数千个 HTTP 请求!

那么,我应该如何并行处理最大数量的 HTTP 请求呢?

0 投票
0 回答
375 浏览

python - python waitress - 杀死不活动的连接和线程

我有一个连接到 falcon API 的服务员服务器:

文档说我可以channel_timeout用来使连接不活动,并cleanup_interval在指定的秒数后终止不活动的连接。

但是,就我而言,这并没有发生。

我有一个需要大量时间的 API - 但只是有时。在这些情况下,我只想杀死那个特定的线程。

PS:我不想增加线程数,默认4就可以了。

0 投票
0 回答
1793 浏览

python - 如何在内部使用多处理时通过 API 重新启动烧瓶服务器

我有一个带有女服务员的烧瓶应用程序,它在请求后获取一些数据,然后它运行一些长时间的计算long_function并返回结果。这些计算是并行的,我正在使用pebble,因为我需要一个超时选项。另外我希望用户能够发送重新启动服务器的请求(即他想更改线程数waitress

我找到了这个解决方案https://gist.github.com/naushadzaman/b65534d912f1551c7d8366b326b7a151 它大部分都可以工作,但它与我的pebble游泳池互动不佳。当服务器在池中时,我无法重新加载服务器。如果我使用long_function_without_pool不使用任何多处理,我可以重新加载服务器,即使它当前正在执行某些工作(当然,结果会丢失,但这就是我想要的)。但是long_function我必须等待池关闭,然后才能重新启动服务器。如果我在池仍处于打开状态时尝试发送重新启动请求,则会收到错误消息:

OSError: [Errno 98] Address already in use

所以我想如果有跑步,p.terminate()那是行不通的。Pool

如何修复此代码,或者我应该使用不同的解决方案?

有关如何复制此错误的简要说明:

  1. 启动应用程序

  2. 发送带有空正文的 POST 请求到http://localhost:5221/

  3. 在收到响应之前(您将有 5 秒)发送不带变量的 GET-request 到http://localhost:5221/restart/

  4. 请享用。服务器现在卡住了,没有任何响应

    /li>
0 投票
1 回答
1921 浏览

python - 使用 Caddy 和 Waitress 进行生产的烧瓶 url_for 重定向到本地主机

我有一个在 Windows EC2 实例上运行的 Flask 服务器。

我需要使用https协议,所以我的设置是这样的:

  • 我有一个 Caddy 服务器
  • 我使用 Waitress 运行我的烧瓶应用程序

这是我对 Caddy 的配置:

一切正常,除了在我的application.py文件中,当我这样做时:

我的网络浏览器重定向我:

结果相同_external=True

但是在模板页面上,例如https://example.com/test2使用render_template( "test2.html")如果我有一个链接<a href="{{ url_for('index') }}" />生成的 HTML 很好:https ://example.com/

现在我已经在 application.py 中对我的 url 进行了硬编码,但这不是我想要保留它的方式......

0 投票
1 回答
2095 浏览

python - 无法使用命令行在 Windows 上运行女服务员烧瓶应用程序

我正在尝试在 Windows 上为示例烧瓶应用程序运行女服务员 WSGI,但它无法正常工作并出现错误

我在用

以下是我在同一目录中的 2 个文件

我的应用程序.py

创建应用程序.py

0 投票
0 回答
84 浏览

python - 使用服务员在生产环境中运行烧瓶

我在这里使用以下链接来设置烧瓶运行,但是当我运行时,我得到了 500 个内部服务器。现在我必须在生产环境中运行烧瓶,我该如何使用女服务员。

0 投票
1 回答
4147 浏览

python - 使用 SSL 公钥/私钥在 Windows 上为 Flask 应用程序提供服务员

如何使用服务员运行使用 SSL 密钥的 Flask 应用程序。SSL 上下文在我的 Flask 的 run() 中指定,如

但是 app.run() 在使用 waitress 时不使用,如下面的代码所示。那么,我在哪里指定密钥?谢谢您的帮助。