tornado.options
— コマンドライン解析¶
モジュールが独自のオプションを定義できるようにするコマンドライン解析モジュール。
このモジュールは、Googleのgflagsに触発されています。argparse
などのライブラリとの主な違いは、グローバルレジストリが使用されるため、どのモジュールでもオプションを定義できることです(デフォルトでtornado.log
も有効になります)。Tornadoの残りの部分は、このモジュールに依存していないため、必要に応じてargparse
または他の構成ライブラリを自由に使用してください。
オプションは、使用前にtornado.options.define
で定義する必要があります。一般的には、モジュールのトップレベルで定義します。オプションは、tornado.options.options
の属性としてアクセスできます。
# myapp/db.py
from tornado.options import define, options
define("mysql_host", default="127.0.0.1:3306", help="Main user DB")
define("memcache_hosts", default="127.0.0.1:11011", multiple=True,
help="Main user memcache servers")
def connect():
db = database.Connection(options.mysql_host)
...
# myapp/server.py
from tornado.options import define, options
define("port", default=8080, help="port to listen on")
def start_server():
app = make_app()
app.listen(options.port)
アプリケーションのmain()
メソッドは、プログラム全体で使用されるすべてのオプションを認識する必要はありません。それらは、モジュールがロードされるときにすべて自動的にロードされます。ただし、オプションを定義するすべてのモジュールは、コマンドラインが解析される前にインポートされている必要があります。
main()
メソッドでは、parse_command_line
またはparse_config_file
のいずれかで、コマンドラインまたは設定ファイルを解析できます。
import myapp.db, myapp.server
import tornado
if __name__ == '__main__':
tornado.options.parse_command_line()
# or
tornado.options.parse_config_file("/etc/server.conf")
注
複数のparse_*
関数を使用する場合は、最後の関数以外はすべてfinal=False
を渡してください。そうしないと、副作用が2回発生する可能性があります(特に、ログメッセージが2倍になる可能性があります)。
tornado.options.options
はOptionParser
のシングルトンインスタンスであり、このモジュールのトップレベル関数(define
、parse_command_line
など)は、単にそのメソッドを呼び出すだけです。サブコマンドなど、分離されたオプションのセットを定義するために、追加のOptionParser
インスタンスを作成できます。
注
デフォルトでは、parse_command_line
またはparse_config_file
が呼び出されると、標準のlogging
モジュールを構成するいくつかのオプションが定義されています。Tornadoにログ構成をそのままにして自分で管理する場合は、コマンドラインで--logging=none
を渡すか、次のコードを実行して無効にします。
from tornado.options import options, parse_command_line
options.logging = None
parse_command_line()
注
parse_command_line
またはparse_config_file
関数は、callback
オプション定義を使用して、ログ構成とユーザー定義のコマンドラインフラグを設定した後で呼び出す必要があります。そうしないと、これらの構成は有効になりません。
バージョン 4.3 で変更: オプション名では、ダッシュとアンダースコアは完全に交換可能です。オプションは、両方を混在させて定義、設定、読み取りできます。ダッシュはコマンドラインでの使用に一般的ですが、設定ファイルにはアンダースコアが必要です。
グローバル関数¶
- tornado.options.define(name: str, default: Optional[Any] = None, type: Optional[type] = None, help: Optional[str] = None, metavar: Optional[str] = None, multiple: bool = False, group: Optional[str] = None, callback: Optional[Callable[[Any], None]] = None) None [ソース]¶
グローバル名前空間にオプションを定義します。
OptionParser.define
を参照してください。
- tornado.options.options¶
グローバルなオプションオブジェクト。定義されたすべてのオプションは、このオブジェクトの属性として利用可能です。
- tornado.options.parse_command_line(args: Optional[List[str]] = None, final: bool = True) List[str] [ソース]¶
コマンドラインからグローバルオプションを解析します。
OptionParser.parse_command_line
を参照してください。
- tornado.options.parse_config_file(path: str, final: bool = True) None [ソース]¶
設定ファイルからグローバルオプションを解析します。
OptionParser.parse_config_file
を参照してください。
- tornado.options.print_help(file=sys.stderr)[ソース]¶
すべてのコマンドラインオプションを stderr(または別のファイル)に出力します。
OptionParser.print_help
を参照してください。
OptionParser クラス¶
- class tornado.options.OptionParser[ソース]¶
オプションのコレクションで、オブジェクトのようなアクセスを持つ辞書です。
通常は、グローバルインスタンスを参照する
tornado.options
モジュールの静的関数を介してアクセスされます。
- OptionParser.define(name: str, default: Optional[Any] = None, type: Optional[type] = None, help: Optional[str] = None, metavar: Optional[str] = None, multiple: bool = False, group: Optional[str] = None, callback: Optional[Callable[[Any], None]] = None) None [ソース]¶
新しいコマンドラインオプションを定義します。
type
は、str
、int
、float
、bool
、datetime
、またはtimedelta
のいずれかになります。type
が指定されていないが、default
が指定されている場合、type
はdefault
の型になります。それ以外の場合、type
のデフォルトはstr
です。multiple
が True の場合、オプションの値はtype
のインスタンスではなく、type
のリストになります。help
およびmetavar
は、自動生成されるコマンドラインヘルプ文字列の構築に使用されます。ヘルプメッセージは次のようにフォーマットされます。--name=METAVAR help string
group
は、定義されたオプションを論理グループにグループ化するために使用されます。デフォルトでは、コマンドラインオプションは、それらが定義されているファイルによってグループ化されます。コマンドラインオプションの名前は、グローバルに一意である必要があります。
callback
が指定されている場合、オプションが変更されるたびに、新しい値を使用して実行されます。これは、コマンドラインオプションとファイルベースのオプションを組み合わせるために使用できます。define("config", type=str, help="path to config file", callback=lambda path: parse_config_file(path, final=False))
この定義では、
--config
で指定されたファイル内のオプションは、コマンドラインで以前に設定されたオプションを上書きしますが、後続のフラグによって上書きされる可能性があります。
- OptionParser.parse_command_line(args: Optional[List[str]] = None, final: bool = True) List[str] [source]¶
コマンドラインで指定されたすべてのオプションを解析します(デフォルトは
sys.argv
です)。オプションは
--option=value
のようになり、それらのtype
に従って解析されます。ブールオプションの場合、--option
は--option=true
と同等です。オプションに
multiple=True
がある場合、コンマ区切りの値が受け入れられます。複数値の整数オプションの場合、x:y
の構文も受け入れられ、range(x, y)
と同等です。sys.argv
のプログラム名であるため、args[0]
は無視されることに注意してください。オプションとして解析されなかったすべての引数のリストを返します。
final
がFalse
の場合、解析コールバックは実行されません。これは、複数のソースからの構成を組み合わせたいアプリケーションに役立ちます。
- OptionParser.parse_config_file(path: str, final: bool = True) None [source]¶
指定されたパスにある設定ファイルを解析してロードします。
設定ファイルには、実行されるPythonコードが含まれています(したがって、信頼できない設定ファイルを使用するのは**安全ではありません**)。定義されたオプションと一致するグローバル名前空間のものは、そのオプションの値を設定するために使用されます。
オプションは、オプションに指定された型、または文字列のいずれかになります(この場合、
parse_command_line
と同じ方法で解析されます)。例(このモジュールのトップレベルドキュメントで定義されたオプションを使用):
port = 80 mysql_host = 'mydb.example.com:3306' # Both lists and comma-separated strings are allowed for # multiple=True. memcache_hosts = ['cache1.example.com:11011', 'cache2.example.com:11011'] memcache_hosts = 'cache1.example.com:11011,cache2.example.com:11011'
final
がFalse
の場合、解析コールバックは実行されません。これは、複数のソースからの構成を組み合わせたいアプリケーションに役立ちます。注
tornado.options
は主にコマンドラインライブラリです。設定ファイルサポートは、それを使用したいアプリケーション向けに提供されていますが、設定ファイルを好むアプリケーションは、代わりに他のライブラリを調べることをお勧めします。バージョン 4.1 で変更: 設定ファイルは、システムのデフォルトエンコーディングではなく、常に utf-8 として解釈されるようになりました。
バージョン 4.4 で変更: 特別な変数
__file__
は、設定ファイル自体の絶対パスを指定する設定ファイル内で使用できるようになりました。バージョン 5.1 で変更: 設定ファイルで文字列を介してオプションを設定する機能が追加されました。
- OptionParser.print_help(file: Optional[TextIO] = None) None [source]¶
すべてのコマンドラインオプションを stderr(または別のファイル)に出力します。
- OptionParser.add_parse_callback(callback: Callable[[], None]) None [source]¶
オプションの解析が完了したときに呼び出される解析コールバックを追加します。
- OptionParser.mockable() _Mockable [source]¶
mock.patch
と互換性のある、自身のラッパーを返します。標準ライブラリの
mock.patch
関数(Python 3.3以降ではunittest.mock
パッケージに含まれており、古いバージョンのPythonではサードパーティのmock
パッケージに含まれています)は、__getattr__
と__setattr__
をオーバーライドするoptions
のようなオブジェクトとは互換性がありません。この関数は、オプションの値を変更するためにmock.patch.object
で使用できるオブジェクトを返します。with mock.patch.object(options.mockable(), 'name', value): assert options.name == value
- OptionParser.group_dict(group: str) Dict[str, Any] [ソース]¶
グループ内のオプションの名前と値。
オプションをアプリケーション設定にコピーするのに役立ちます。
from tornado.options import define, parse_command_line, options define('template_path', group='application') define('static_path', group='application') parse_command_line() application = Application( handlers, **options.group_dict('application'))
バージョン 3.1 で新規追加。