我有一个TornadoRequestHandler
和@Tornado.web.stream\u request\u body
装饰器,允许对处理程序进行分块流式处理。
在允许流式传输之前,我需要执行身份验证和其他一些检查。我试图在CrisestHandler.prepare()
方法中实现这些,但是当我使用请求
向处理程序传输数据时,检查失败,连接突然关闭,我看到一个异常:
requests.exceptions.ConnectionError:[Errno 32]管道破裂
我的方法如下:
def prepare(self):
check = some_function()
if not check:
self.set_status(400)
self.write('some error message')
self.finish()
return
如何确保请求正常关闭,以便在检查失败时向客户端返回错误消息?
在HTTP/1中很难优雅地处理这个问题。大多数客户机只是盲目地编写请求,在编写完整的请求之前不会寻找服务器的响应,因此阻止他们发送整个请求的唯一方法是突然关闭连接。
您想要的行为可以在一个名为100-继续
的模糊HTTP功能中找到。如果客户端支持这一点,那么它将等待准备()
完成,以查看是否有错误,然后再上传请求。请求
不支持此功能。如果在读取时传递expect_100_continue=True
,则Tornado的默认HTTP客户端会这样做。
如果我们在后台启动KafkaStream应用程序(比如Linux),有没有一种方法可以从外部向应用程序发出信号,从而启动优雅的关机?
优雅关闭,包括两部分,一个是 RPC 框架作为客户端,一个是 RPC 框架作为服务端。 作为服务端 作为服务端的时候,RPC 框架在关闭时,不应该直接暴力关闭。在 RPC 框架中 com.alipay.sofa.rpc.context.RpcRuntimeContext 在静态初始化块中,添加了一个 ShutdownHook // 增加jvm关闭事件 if (RpcConf
在我的webapp中,我创建了一个使用具有固定大小线程池的的服务。我在整个应用程序生命周期中重用相同的。 All在Tomcat中运行,在关闭时出现以下错误: 我确实意识到在关闭tomcat之前需要关闭ExecutorService。Soms所以线程已经谈到了这一点,但我找不到一个干净的方法来处理这一点。 我是否应该使用,就像@tim-bender建议的那样,在优雅地关闭线程和执行器?还是应该使用C
Dorado的优雅关闭通过ShutDownHook方式实现,调用端和服务端通过添加hook进行资源的清理和关闭 protected synchronized void addShutDownHook() { if (hook == null) { hook = new ShutDownHook(this); Runtime.getRuntime().addS
Graceful shutdown When you deploy a new version of your application, you must replace the previous version. The process manager you’re using will first send a SIGTERM signal to the application to noti
我有一个应用程序运行在嵌入式jetty服务器上。现在我想将服务器作为服务启动/停止。我使用一个脚本来启动服务器。