我正在為我的 python 應用程式使用 docker 和 gunicorn。我開始 gunicorn 如下:
CMD ["gunicorn", "--workers 2", "--threads 2", "--bind 0.0.0.0:8000", "--preload", ""main:create_app()""]
但是由于最后一個元素即 ( ""main:create_app()"" )而導致錯誤語法錯誤。正如 gunicorn 檔案中給出的那樣,我正在嘗試使用以下形式:
def create_app():
app = FrameworkApp()
...
return app
$ gunicorn --workers=2 'test:create_app()'
我還嘗試將單引號作為"'main:create_app()'",但這也失敗了。
我缺少什么?
uj5u.com熱心網友回復:
正確的用法是:
RUN ["gunicorn", "--workers", "2", "--threads", "2", "--bind", "0.0.0.0:8000", "--preload", "main:create_app()"]
- 在原始/作業 shell 命令中,兩個 shell 引數之間的任何地方都有一個未加引號的空格,您需要在 JSON 串列中拆分為單獨的元素。這意味著
--workers和2是兩個不同的字串,而不是一個字串--workers 2;這同樣適用于你有引數和引數選項配對的其他任何地方。 - 語法 shell 引號,如 around 的引號
'main:create_app()',是對 shell()的說明,不應將諸如此類的符號視為 shell 語法。因為這里沒有shell,所以那些指令是不必要的。僅用"main:create_app()"作簡單的 JSON 字串,僅帶有 JSON 引號;沒有必要或適當的字面引號。
如果您以后對如何將簡單命令轉換為 JSON 字串有疑問,可以要求jq為您完成:
$ jq -cn --args '$ARGS.positional' -- gunicorn --workers 2 --threads 2 --bind 0.0.0.0:8000 --preload 'main:create_app()'
["gunicorn","--workers","2","--threads","2","--bind","0.0.0.0:8000","--preload","main:create_app()"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/535517.html
標籤:码头工人文件
上一篇:【《硬體架構的藝術》讀書筆記】02 時鐘和復位(2)
下一篇:如何限制docker的記憶體使用
