竜巻Webサーバーコードでは、SSLIOStreamはIOStreamから継承し、BaseIOStreamクラスを継承します。 BaseIOStreamには、竜巻サーバーを起動する場所からのmax_write_buffer_sizeがあります。私は設定する環境変数の使用が見つかりませんでした、それはコンストラクタパラメータとして渡される必要があります。竜巻のBaseIOStreamクラスオブジェクトでmax_write_buffer_sizeを設定する方法は?
0
A
答えて
0
source codeから、max_write_buffer_size
はプライベート変数ではないことがわかります。したがって、BaseIOStream
オブジェクトまたはBaseIOStream
を継承するクラスSSLIOStream
およびIOStream
のオブジェクトのいずれかからアクセスできます。例えばので
:使用が制限されており、おそらくデフォルト値は右の1(無制限)ですので
import socket
import tornado.ioloop
import tornado.iostream
import tornado.options
# def connect_baseiostream():
# sock = socket.socket()
# stream = tornado.iostream.BaseIOStream(sock)
# stream.max_write_buffer_size = 10000 # Set max_write_buffer_size
def connect_iostream():
sock = socket.socket()
stream = tornado.iostream.IOStream(sock)
stream.max_write_buffer_size = 10000 # Set max_write_buffer_size
stream.connect(host, port) # Defined host and port
def main():
tornado.options.parse_command_line()
tornado.ioloop.IOLoop.instance().add_callback(connect_iostream)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
0
このパラメータは、HTTPサーバで公開されていません。もちろん、その問題を作成してgithubで議論することもできます。もう1つの解決策は、をサブクラス化してTCPServer's handle_connection
の独自の実装(プライベート_
の方法に留意してください)です。
from tornado.httpserver import HTTPServer
max_write_buffer_size = 65535
class CustomHTTPServer(HTTPServer):
def _handle_connection(self, connection, address):
# https://github.com/tornadoweb/tornado/blob/master/tornado/tcpserver.py#L257
if self.ssl_options is not None:
assert ssl, "Python 2.6+ and OpenSSL required for SSL"
try:
connection = ssl_wrap_socket(connection,
self.ssl_options,
server_side=True,
do_handshake_on_connect=False)
except ssl.SSLError as err:
if err.args[0] == ssl.SSL_ERROR_EOF:
return connection.close()
else:
raise
except socket.error as err:
if errno_from_exception(err) in (errno.ECONNABORTED, errno.EINVAL):
return connection.close()
else:
raise
try:
if self.ssl_options is not None:
stream = SSLIOStream(connection, io_loop=self.io_loop,
max_buffer_size=self.max_buffer_size,
read_chunk_size=self.read_chunk_size,
max_write_buffer_size=max_write_buffer_size)
else:
stream = IOStream(connection, io_loop=self.io_loop,
max_buffer_size=self.max_buffer_size,
read_chunk_size=self.read_chunk_size,
max_write_buffer_size=max_write_buffer_size)
future = self.handle_stream(stream, address)
if future is not None:
self.io_loop.add_future(gen.convert_yielded(future),
lambda f: f.result())
except Exception:
app_log.error("Error in connection callback", exc_info=True)
およびカスタマイズされたサーバーを使用します。
application = web.Application([
(r"/", MainPageHandler),
])
http_server = CustomHTTPServer(application)
http_server.listen(8080)
ioloop.IOLoop.current().start()
を
関連する問題
- 1. 竜巻で接続タイムアウトを設定する方法は?
- 2. 竜巻のコールバックをプロファイルする方法
- 3. 竜巻IOStreamのタイムアウトを設定するには?
- 4. 私はジャンゴと竜巻を結合する方法を探していた竜巻の生産環境のアドバイス
- 5. 竜巻MySQLは:カーソル
- 6. Rで竜巻グラフのバーを並べ替える方法は?
- 7. 竜巻オブジェクトのユーザーのクッキーをオリエンタルにチェックする方法は?
- 8. コールバック竜巻
- 9. ファイルアップロードと竜巻
- 10. 竜巻とブロックコード
- 11. 竜巻WSGIユニットテスト
- 12. 竜巻とWTForms
- 13. 2つのhtmlファイルを竜巻で結合する方法
- 14. 竜巻のPeriodicCallbackでブロックコードを処理する方法
- 15. 竜巻でのユーザーセッションを処理する標準的な方法
- 16. Pythonの竜巻スーパーバイザセットアップ
- 17. 竜巻やRedisの
- 18. Pythonの竜巻ストリームリクエストボディ
- 19. 竜巻Python:NGINXとの竜巻サーバの統合
- 20. 竜巻では、非ブロックファイルの読み書き方法は?
- 21. 竜巻アプリケーションでRabbitMQ(Pikaライブラリ)を通信する方法
- 22. Java 7で竜巻fx hello worldを実行する方法
- 23. はセロリと竜巻の統合:例外RuntimeError:竜巻-RedisのはRedisのバックエンド
- 24. バインド竜巻Webサーバーランダムポート
- 25. 竜巻サーバーはファイルを提供する
- 26. 竜巻ウェブアプリケーションを停止するには?
- 27. pythonの竜巻アプリケーションをスケールする適切な方法
- 28. 竜巻でURLパターンを一致させる方法www.abc.com/?code=abcd1234
- 29. 竜巻を非同期に呼び出す方法は?
- 30. 大きなファイルをアップロードする方法竜巻を持つ100M