<p>gunicorn + argparse๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค</p>

์— ๋งŒ๋“  2019๋…„ 10์›” 07์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: benoitc/gunicorn

argparse ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ pytorch ๋ชจ๋ธ์„ depolyํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์•ฑ์— ์„ ์–ธ๋œ argparse ๋ชจ๋“ˆ์ด gunicorn์˜ ์ธ์ˆ˜๋ฅผ ๋Œ€์ฒดํ•  ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

usage: gunicorn [-h] [--mode MODE] [--batch_size BATCH_SIZE] [--warmup WARMUP]
                [--early_stop EARLY_STOP] [--seed SEED] [--t_total] [--lr LR]
                [--lr_decay_epochs LR_DECAY_EPOCHS]
                [--lr_decay_rate LR_DECAY_RATE]
                [--weight_decay_rate WEIGHT_DECAY_RATE] [--bert_lr BERT_LR]
                [--num_epochs NUM_EPOCHS] [--model_dir MODEL_DIR]
                [--model_path MODEL_PATH] [--num_workers NUM_WORKERS]
                [--train_dataset TRAIN_DATASET] [--eval_dataset EVAL_DATASET]
                [--test_dataset TEST_DATASET] [--bert_low_case BERT_LOW_CASE]
                [--bert_type BERT_TYPE] [--bert_hidden_size BERT_HIDDEN_SIZE]
                [--bert_dropout BERT_DROPOUT]
                [--bert_mention_max_len BERT_MENTION_MAX_LEN]
                [--bert_max_len BERT_MAX_LEN]
                [--bert_char_max_len BERT_CHAR_MAX_LEN]
                [--bert_entity_threshold BERT_ENTITY_THRESHOLD]
                [--bert_freeze] [--bert_threshold BERT_THRESHOLD]
                [--bert_adam] [--enhance_mention] [--interaction]
                [--context_dropout CONTEXT_DROPOUT]
                [--mention_dropout MENTION_DROPOUT]
                [--rnn_hidden_size RNN_HIDDEN_SIZE]
                [--rnn_num_layers RNN_NUM_LAYERS] [--rnn_dropout RNN_DROPOUT]
                [--rnn_num_dirs RNN_NUM_DIRS]
                [--cnn_embedding_dim CNN_EMBEDDING_DIM]
                [--cnn_output_dim CNN_OUTPUT_DIM] [--cnn_filters CNN_FILTERS]
                [--hierarchy_alpha HIERARCHY_ALPHA]
gunicorn: error: unrecognized arguments: -w 1 -b 0.0.0.0:3101 --reload -t 500 api:app

์œ„ ์„น์…˜์˜ ํžŒํŠธ๋Š” ์•ฑ์˜ ๋ชจ๋ธ ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

argparse ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ  CLI๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Gunicorn ํ˜ธ์ถœ parse_args ์ž์ฒด ์ธ์Šคํ„ด์Šค์—์„œ argparse . ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ Gunicorn์ด ์‹œ์ž‘๋œ ํ›„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ sys.argv ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๊ณ ์œ ํ•œ ์ธ์ˆ˜๋ฅผ parse_args ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://docs.python.org/3/library/argparse.html#the -parse-args-method

๋‹ต์žฅ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. args = parser.parse_args(sys.argv) ์™€ ๊ฐ™์€ ๋‚ด APP์—์„œ argparse ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด gunicorn์˜ ์ธ์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
args, unknown = parser.parse_known_args() ๋กœ ๋ฐ”๊พธ๋ ค๊ณ  ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ๋ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ~

๋ชจ๋“  4 ๋Œ“๊ธ€

argparse ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ  CLI๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Gunicorn ํ˜ธ์ถœ parse_args ์ž์ฒด ์ธ์Šคํ„ด์Šค์—์„œ argparse . ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ Gunicorn์ด ์‹œ์ž‘๋œ ํ›„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ sys.argv ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๊ณ ์œ ํ•œ ์ธ์ˆ˜๋ฅผ parse_args ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://docs.python.org/3/library/argparse.html#the -parse-args-method

argparse ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ  CLI๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Gunicorn ํ˜ธ์ถœ parse_args ์ž์ฒด ์ธ์Šคํ„ด์Šค์—์„œ argparse . ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ Gunicorn์ด ์‹œ์ž‘๋œ ํ›„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ sys.argv ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๊ณ ์œ ํ•œ ์ธ์ˆ˜๋ฅผ parse_args ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://docs.python.org/3/library/argparse.html#the -parse-args-method

๋‹ต์žฅ์„ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. args = parser.parse_args(sys.argv) ์™€ ๊ฐ™์€ ๋‚ด APP์—์„œ argparse ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด gunicorn์˜ ์ธ์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
args, unknown = parser.parse_known_args() ๋กœ ๋ฐ”๊พธ๋ ค๊ณ  ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ๋ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ~

๊ทธ๋Ÿฌ๋ฉด ๋ฌธ์ œ๋ฅผ ์ข…๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ณ ์œ ํ•œ ๋ช…๋ น์ค„ ์Šค์œ„์น˜์™€ gunicorn ์Šค์œ„์น˜๋ฅผ ํ•จ๊ป˜ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜์‹ญ๋‹ˆ๊นŒ?

๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰