当前位置: 首页 > 面试题库 >

有要求的flask破损管

巫马自明
2023-03-14
问题内容

我想在flask应用程序中发送本地REST请求,如下所示:

from flask import Flask, url_for, request
import requests

app = Flask(__name__)

@app.route("/<name>/hi", methods=["POST"])
def hi_person(name):
    form = {"name": name}
    return requests.post(url_for("hi", _external=True), data=form)

@app.route("/hi", methods=["POST"])
def hi():
    return 'Hi, %s!' % request.form["name"]

发送curl -X POST http://localhost:5000/john/hi导致整个烧瓶应用程序冻结。当我发送一个终止信号时,我得到一个坏的管道错误。有什么办法可以防止flask冻结?


问题答案:

在能够处理并发请求(可能是gunicorn或uWSGI)的适当WSGI服务器下运行flask应用程序,它将起作用。在开发时,请使用以下命令在Flask提供的服务器中启用线程:

app.run(threaded=True)

但请注意,不建议将Flask服务器用于生产环境。从Flask 1.0开始,threaded默认情况下处于启用状态flask,实际上,你想使用命令行上的命令来运行你的应用程序。

发生的情况是,使用请求你正在向flask应用程序发出第二个请求,但是由于它仍在忙于处理第一个请求,因此只有在处理完第一个请求后,它才会响应第二个请求。

顺便说一下,在Python 3下,socketserver实现可以更优雅地处理断开连接,并继续提供服务而不是崩溃。



 类似资料:
  • 问题内容: 我想在flask应用程序中发送本地REST请求,如下所示: 发送导致整个烧瓶应用程序冻结。当发送终止信号时,出现管道错误。有什么办法可以防止烧瓶冻结? 问题答案: 在能够处理并发请求(可能是gunicorn或uWSGI)的适当WSGI服务器下运行flask应用程序,它将起作用。在开发时,请使用以下命令在Flask提供的服务器中启用线程: 但请注意,不建议将Flask服务器用于生产环境。

  • 上周六,我们开始遇到管道破裂的问题,每天清晨都有一个通过石英调度器运行的作业。下面是一些细节。 该作业由一个本地java类组成,该类调用基于Talend的作业。每个基于Talend的作业都会出现断管错误。奇怪的是,当我运行通过调度程序提交的同一个java类时,不会抛出错误,作业也会成功运行。此外,该作业流在Tomcat中运行。 我应该在Talend jobs中做些什么,看看是否可以先建立连接?正如

  • 问题内容: 我收到了一个调用返回的消息,已将套接字()作为目标传递给了该调用。可以预期的是,远程主机在它们受够了之后会简单地断开连接,而我不会从他们那里收到任何信息。 发生掉线时,出现以下错误: 但是我只有一个接口。我该如何区分折断的管道错误和其他类型的错误? 问题答案: 断开的管道错误在syscall软件包中定义。您可以使用相等运算符将错误与syscall中的错误进行比较。检查http://go

  • 我有一个自定义指令,在输入中的ng-model上的过滤器之后,将输入限制为数字:

  • 问题内容: 我正在运行gulp 3.6.2,并具有从在线示例中设置的以下任务 每当我的CoffeeScript gulp手表出现错误时,手表就会停止-显然不是我想要的。 正如其他地方推荐的那样 但它似乎不起作用。 我究竟做错了什么? 响应@Aperçu的回答,我修改了方法并尝试了以下操作: 重新启动,然后在我的coffee文件中创建语法错误。相同的问题: 问题答案: 您的函数应如下所示: 我认为您

  • 本文向大家介绍DBMS中的无损和有损分解,包括了DBMS中的无损和有损分解的使用技巧和注意事项,需要的朋友参考一下 通过将表分为多个表,DBMS中的分解可以消除数据库中的冗余,异常和不一致。 以下是类型- 无损分解 如果可以使用Joins从分解后的表中重建关系R,则分解是无损的。这是首选。分解后,信息不会因关系而丢失。联接将导致相同的原始关系。 让我们看一个例子- <EmpInfo> Emp_ID