2011-11-07 34 views
1

是否有任何方法來封裝WSGI應用程序方法,例如,當調用某個特定方法時,服務器將發送響應,而不是在應用程序方法返回序列時發送響應?在WSGI中,發送沒有返回的響應

基本上,我想要有相當於finish_response(responseValue)方法。

回答

3

WSGI應用程序必須返回一個可迭代的,一種或另一種方式。如果你想送部分反應,把你的應用程序轉換爲發電機(或返回一個迭代器):

import wsgiref, wsgiref.simple_server, time 

def app(environ, start): 
    start('200 OK', [('Content-Type', 'text/plain')]) 

    yield 'hello ' 
    time.sleep(10) 
    yield 'world' 

httpd = wsgiref.simple_server.make_server('localhost', 8999, app) 
httpd.serve_forever() 
+0

具體來說,這個工程因爲WSGI規範指出潛在的WSGI服務器必須執行的每個數據塊的沖洗在獲得下一個之前從迭代器/發生器返回。 WSGI中間件顯然可能會以各種方式干擾此。 –

相關問題