我正在为我的 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()'”,但这也失败了。
我缺少什么?
正确的用法是:
RUN ["gunicorn", "--workers", "2", "--threads", "2", "--bind", "0.0.0.0:8000", "--preload", "main:create_app()"]
--workers
和 2
是两个不同的字符串,而不是一个字符串 --workers 2
;这同样适用于任何有参数和参数选项配对的地方。'main:create_app()'
周围的引号一样,是 对 shell 的指示,像 ()
这样的符号不应被视为 shell 语法。因为这里没有 shell,所以这些说明是不必要的。只需使用 "main:create_app()"
作为简单的 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()"]