实现可自定义的“harakiri”功能的WSGI中间件
项目描述
WSGI Harakiri
废弃
不要使用这个,这不是实现请求超时的最佳方式。您可能更愿意使用并改进您WSGI服务器内置的任何此类功能,因为它将更可靠地终止事物。
实现可自定义的‘harakiri’功能的WSGI中间件。
安装
使用 pip
pip install wsgi-harakiri
在Python 2.7、3.4和3.5上进行了测试。
用法
使用中间件包装您的WSGI应用程序,例如在Django应用程序的 wsgi.py 中
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
application = get_wsgi_application()
from wsgi_harakiri import HarakiriMiddleware
# By default adds a request timeout of 30 seconds
application = HarakiriMiddleware(application)
您的应用程序 不能 在多线程服务器上运行(多进程可以),并且 必须 在POSIX系统上运行。使用 alarm 系统调用,因此 不能 与使用它的其他东西结合,例如uWSGI中的‘harakiri’功能。
API
HarakiriMiddleware(application, timeout=30, on_harakiri=None, error_app=None)
使用harakiri功能包装WSGI应用程序。
application 可以是任何WSGI应用程序。
timeout 可以是任何整数秒数,默认为30。
on_harakiri 当发生哈克瑞里(harakiri)时将被调用,在警报函数内部 - 因此它适合用于记录导致超时的堆栈跟踪。它的返回值将被忽略。
error_app 是第二个WSGI应用,当发生超时时将被调用以产生错误响应。默认响应是一个相当简单的“500内部服务器错误”,带有HTML“<h1>页面加载超时</h1>”。
使用所有参数的示例用法
application = get_wsgi_application()
from wsgi_harakiri import HarakiriMiddleware
def harakiri_handler():
logger.error("Harakiri occured", extra={'stack': True})
def harakiri_page(environ, start_response):
start_response(
'500 Internal server error',
[('Content-Type', 'text/html')]
)
return [b'<h1>Sorry, this page timed out.</h1>']
application = HarakiriMiddleware(
application,
timeout=15,
on_harakiri=harakiri_handler,
error_app=harakiri_page,
)
哈克瑞里(Harakiri)
这是一个在超时时抛出的异常。你应在代码的任何地方都不要捕获它,但你可以使用它来检测在特定的代码路径中是否发生了这种情况。例如
from wsgi_harakiri import Harakiri
def find_users(search_term):
conn = make_db_connection()
try:
return conn.query(search_term)
except Harakiri:
logger.error("A search timed out", extra={'search_term': search_term})
raise
历史
待发布
新版本说明在这里
1.0.0 (2016-03-28)
PyPI上的首次发布,包含HarakiriMiddleware。
项目详情
关闭
wsgi-harakiri-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 84583627bf1d0afdeae062855f78970c04b09aec80b0c51cc127ef06e4e43ada |
|
MD5 | 247f66a80a1367454a8f3723a012f221 |
|
BLAKE2b-256 | 80342da6fa30cf6a516367b5a06d9f4d165c972e3fb9e335955e0de1e9ab1abc |
关闭
wsgi-harakiri-1.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b28fcdf2696bcf4d0877174c802e732072d4a0dda4702eebc921fc15da54da37 |
|
MD5 | 2e19d8a3b5c648b3af8b6283e8212dc4 |
|
BLAKE2b-256 | 2044eb5d49be9ec0610ef8762e9d37689c8308ceac8231b01799e01aad2c81b7 |