gpt4 book ai didi

python - WSGI:start_response 函数的目的是什么

转载 作者:太空狗 更新时间:2023-10-29 17:18:18 27 4
gpt4 key购买 nike

你能提供一个现实生活中的例子吗 WSGI start_response功能? (网络服务器为 wsgi 应用程序提供该功能)

我不明白引入start_response目的

(我读过大约 10 篇关于 WSGI 标准的相同文本。他们都说“WSGI 标准是……”他们都没有说“WSGI 是这样设计的为了.. ”:()

最佳答案

Could you supply a real-life example of WSGI start_response() function?

那么,mod_wsgistart_response() 函数在 line 2678 of mod_wgsi.c 上定义

None of them says "WSGI is designed this way in order to..."

PEP3333 中 WSGI 设计的这一方面似乎没有太多理由。 .翻看web-sig mailing list archives ,我遇到了this message ...

Some time ago I objected the decision to remove start_response function from next version WSGI, using as rationale the fact that without start_callable, asynchronous extension are impossible to support.

Now I have found that removing start_response will also make impossible to support coroutines (or, at least, some coroutines usage).

[...]

...这开始了一个关于这部分实现的基本原理的长线程,可能值得一读。

如果你真的想知道 WSGI 接口(interface)这方面的起源,你将不得不阅读 this initial draft 之间的大量消息。 2003 年 12 月,和 this later draft 2004 年 8 月。


更新

How would that be compatible with that other protocol?

我不是很清楚你的意思。忽略所有早期草案,WSGI 1.x 接口(interface)可以以两种不同的方式使用。

“弃用”方法是...

def application(environ, start_response):
write = start_response(status, headers)
write('content block 1')
write('content block 2')
write('content block 3')
return None

...“推荐”方法是...

def application(environ, start_response):
start_response(status, headers)
return ['content block 1',
'content block 2',
'content block 3']

据推测,您可以同时使用两者,...

def application(environ, start_response):
write = start_response(status, headers)
write('content block 1')
return ['content block 2',
'content block 3']

...但由此产生的行为可能是未定义的。

this blog post ,正在考虑的新 WSGI 2.x 方法是...

def application(environ):
return (status,
headers,
['content block 1',
'content block 2',
'content block 3'])

...这消除了 start_response() 可调用,显然,write() 可调用,但没有指示何时(甚至是否)这可能会取代 WSGI 1.x。

关于python - WSGI:start_response 函数的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com