2016-10-24 7 views
0

私はrender()機能を持っていますが、これは応答を直接返すほうが速いため遅延機能を使用していません。直接バイトを返すのではなく、最初に要求オブジェクトに書き込んで、手動でファイナライズしてからリターンします。 2番目のコードスニペットでreturn文を使用できることは重要です。 (そうしても大丈夫である場合)ツイスト:ブロックリクエストからの返信

def render(self, request) 
    return b"not authorized" 

def render(self, request) 
    request.write(b"not authorized") 
    request.finish() 
    return NOT_DONE_YET 

になるべき私はNOT_DONE_YETよりも、何かを返すときに私は、有効なexamplesがありexceptions.RuntimeError: Request.write called on a request after Request.finish was called.

を得ることに気付きました非常に類似した配列を利用する:

request.redirect(...) 
    request.finish() 
    return NOT_DONE_YET 

write/finished/NOT_DONE_YETの組み合わせを使用しても問題ありませんか?

答えて

0

[OK]を、a docstring in Twisted's source codeによれば、

render_METHOD方法は戻り値がC {server.NOT_DONE_YET}である場合を除き、その場合、それを に、レンダリングされたページ あろうバイト文字列を返すことが期待されます C {request.write(data)}を使用して結果を書き、C {request.finish()}を呼び出すことは、このクラスの責任です。

関連する問題