相关疑难解决方法(0)

如果请求中止,则停止处理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万
查看次数

错误:[Errno 32]管道破裂

我正在研究一个Django项目.一切顺利,直到我创建了一个Ajax请求,将值从html页面发送到后端(views.py).

当我使用Ajax发送数据时,我能够查看传递给views.py的值,它甚至可以到达render_to_response方法并显示我的页面,但会在终端中抛出损坏的管道错误.我没有看到任何类型的程序中断,但我想知道是否有办法防止此错误发生.我检查了其他回复.但到目前为止没有运气.

当我尝试在刷新的页面上再次点击提交时,我收到以下消息:

您要查找的页面使用了您输入的信息.返回该页面可能会导致您重复执行任何操作.你想继续吗?[提交] [取消]`

这是转储:

    Traceback (most recent call last):
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 34812)
----------------------------------------
  File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 284, in run
    self.finish_response()
  File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 324, in finish_response
    self.write(data)
  File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 403, in write
    self.send_headers()
  File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 467, in send_headers
    self.send_preamble()
  File "/usr/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 385, in send_preamble
    'Date: %s\r\n' % http_date()
  File "/usr/lib/python2.7/socket.py", line 324, in write
    self.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

Traceback …
Run Code Online (Sandbox Code Playgroud)

python django broken-pipe python-2.7

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

标签 统计

python ×2

broken-pipe ×1

django ×1

flask ×1

http ×1

python-2.7 ×1

rest ×1

wsgi ×1