相关疑难解决方法(0)

如何在python中处理损坏的管道(SIGPIPE)?

我在python中编写了一个简单的多线程游戏服务器,为每个客户端连接创建一个新线程.我发现时不时,服务器会因为管道损坏/ SIGPIPE错误而崩溃.当程序试图将响应发送回不再存在的客户端时,我非常确定它正在发生.

处理这个问题的好方法是什么?我的首选解决方案只是关闭与客户端的服务器端连接并继续,而不是退出整个程序.

PS:这个问题/答案以一般方式处理问题; 具体应该如何解决?

python broken-pipe

47
推荐指数
2
解决办法
8万
查看次数

如果请求中止,则停止处理Flask路由

我有一个烧瓶REST端点,它执行一些cpu密集型图像处理,并需要几秒钟才能返回.通常,此端点被调用,然后由客户端中止.在这些情况下,我想取消处理.我怎么能在烧瓶中做到这一点?

在node.js中,我会做类似的事情:

req.on('close', function(){
  //some handler
});
Run Code Online (Sandbox Code Playgroud)

我期待烧瓶有类似的东西,或者我可以在处理过程中检查某些点的同步方法(request.isClosed()),如果关闭则返回,但我找不到.

我考虑发送一些东西来测试连接是否仍然打开,如果失败则捕获异常,但似乎Flask缓冲所有输出,因此在处理完成并尝试返回结果之前不会抛出异常:

已建立的连接已由主机中的软件中止

如果客户端中止他们的请求,我怎样才能取消处理中途?

python rest wsgi http flask

31
推荐指数
1
解决办法
1万
查看次数

如何在网页中连续显示Python输出?

我希望能够访问一个网页,它将运行一个python函数并在网页中显示进度.

因此,当您访问该网页时,您可以看到脚本的输出,就像您从命令行运行它一样.

根据这里的答案

如何在网页中连续显示python输出?

我正在尝试显示PYTHON的输出

我试图使用Markus Unterwaditzer的代码和python函数.

import flask
import subprocess

app = flask.Flask(__name__)

def test():
    print "Test"

@app.route('/yield')
def index():
    def inner():
        proc = subprocess.Popen(
            test(),
            shell=True,
            stdout=subprocess.PIPE
        )

        while proc.poll() is None:
            yield proc.stdout.readline() + '<br/>\n'
    return flask.Response(inner(), mimetype='text/html')  # text/html is required for most browsers to show the partial page immediately

app.run(debug=True, port=5005)
Run Code Online (Sandbox Code Playgroud)

它运行但我在浏览器中看不到任何内容.

flask python-2.7

25
推荐指数
2
解决办法
2万
查看次数

标签 统计

flask ×2

python ×2

broken-pipe ×1

http ×1

python-2.7 ×1

rest ×1

wsgi ×1