本篇介紹將Gunicorn的gunicorn_service.py及啟動虛擬環境的指令,再包一個shell script,讓服務啟動的指令簡潔一些。
原本python程式包好Gunicorn及準備好虛擬環境後,原始啟動方式如下:
source activate myenv python gunicorn_service.py --port 5000 start source deactivate
如果要關閉服務,或是reload,也要照上面的指令,但start改成stop或reload。但缺點是要打3行難記的指令,而且還要記得指定port號碼。
為了讓啟動指令更容易用,我另外寫一個shell script,將上述指令包起來,並把變數抽出來,執行檔存為gunicorn_service.sh :
#!/bin/bash PORT=5000 APPNAME=myRestful ENVNAME=myenv source activate ${ENVNAME} python gunicorn_service.py --port ${PORT} --app ${APPNAME}:app $1 source deactivate
上述程式碼將port號碼、APP檔名、python虛擬環境名稱,抽出來,使更換服務時,方便修改。
gunicorn_service.py要加下列兩段程式碼,使"--app"參數可以用:
parser.add_argument( '-p', '--port', metavar='PORT', type=int, default=9500, help='the port to bind. [default=\'9500\']' ) #---------------------加這一段--------------------- parser.add_argument( '-a', '--app', metavar='APP', type=str, default='', help='Flask APP name with "....:app".' ) #------------------------------------------------- . . . self.config = imp.load_source('config', self.conf_path) #---------------------加這一段--------------------- if args.app != '': self.config.app = args.app #------------------------------------------------- . . .
啟動時,可以直接下./gunicorn_service.sh start ,停止服務./gunicorn_service.sh stop,重載服務./gunicorn_service.sh reload。
其實後面的start, stop, reload都是直接傳遞給gunicorn_service.py,故任何gunicorn_service.py可以接授的關鍵字,都可以用。
沒有留言:
張貼留言