微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以编程方式终止uwsgi工作者

在我的应用程序中,我需要“模拟”HTTP超时。 简单地说,在这种情况下:

client -> myapp -> server

client一个HTTP POST连接到myapp ,并将其转发给server 。 但是,由于networking问题或类似问题, server不响应。 我坚持从client 打开TCP会话 ,我需要放弃。

我的应用程序使用web.py,Nginx和uwsgi

我不能返回一个自定义的HTTP错误,如418 I am a teapot – 它必须是一个连接超时,以尽可能接近server的行为。

websocket无法连接到ec2与Nginx

可以shiny的决定使用谁login到Nginx反向代理

Nginx的memcachecaching和失效

Docker Nginx停止了: 1#1:在上游找不到主机

确定是否有人使用Nginx,Apache或Lighttpd

一个hack-y的解决scheme可能(我猜)只是time.wait()直到client断开,但这将使用uwsgi线程,我有一种感觉,它可能导致资源匮乏,因为server超时可能发生的其他连接。 另一种方法在这里指出,但是这个解决scheme意味着返回一些东西给client ,这不是我的情况。

所以我的问题是:是否有一个优雅的方式来杀死一个uwsgi工作程序从Python代码

到目前为止我find了

set_user_harakiri(N) ,我可以结合time.sleep(N+1) 。 然而,在这种情况下,uwsgi检测到harakiri,并尝试重新产生工人。

worker_id()但我不知道如何处理它 – 我找不到使用它的很多文档

build议使用connection_fd() ,如此处所述

disconnect()似乎什么都不做,代码继续并返回到client

suspend()暂停实例,但Nginx返回样板错误页面

任何其他的想法?

UPDATE

结果比这更复杂。 如果我只是closures套接字或从uwsgi断开连接,Nginx web服务器检测到“服务器错误”并返回一个500样板错误页面。 而且,我不知道如何告诉Nginx停止如此有用。

fastcgicaching如何cachinglogin的用户,并为每个用户定制

启用Nginx块传输编码

将RoR部署到AWS Beanstalk时发生Nginx错误

Nginx:设置一个认的文件扩展名

为什么android获得错误的SSL证书? (两个域名,一个服务器)

答案是两者的结合。

从python应用程序返回444

按照这个答案解释Nginx,即使用uwsgi_intercept_errors指令。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐