使用python模块中的gunicorn调用Flask应用程序

时间:2018-01-29 22:05:58

标签: python flask gunicorn

我想从CLI启动一个类似的Web应用程序:

 user@server:~$ my_app web --start

Web项目是使用Flask开发的,我希望在deamon模式下使用gunicorn执行Web应用程序。

但我不明白如何从python模块执行gunicorn命令。命令是:

user@server:~$ gunicorn --bind 0.0.0.0:8000  wsgi:app --daemon

我想到了以下功能:

def start_server():
     command = "gunicorn --bind 0.0.0.0:8000 wsgi:app --daemon"
     subprocess.call(command, shell=True)

显然它不起作用。我想要一些允许我从python模块控制服务器(启动,状态,停止等)的东西。有可能吗?

项目结构:

├── my_app
│   ├── cli
│   │   ├── cli_app.py
│   │   ├── __init__.py
│   ├── helpers.py
│   ├── __version__.py
│   └── web
│       ├── __init__.py
│       ├── services.py
│       ├── static/
│       ├── templates/
│       │   ├── index.html
│       ├── services.py
│       ├── wsgi.py

1 个答案:

答案 0 :(得分:0)

我用 os.chdir(这里)解决了这个问题,其中这里是wsgi模块的当前目录。

像这样的东西(server.py):

import os
import subprocess

here = os.path.abspath(os.path.dirname(__file__))

def start_server():
     os.chdir(here)
     command = "gunicorn --bind 0.0.0.0:8000 wsgi:app --daemon"
     subprocess.call(command, shell=True)

目录结构是:

├── my_app
│   ├── cli
│   │   ├── cli_app.py
│   │   ├── __init__.py
│   ├── helpers.py
│   ├── __version__.py
│   └── web
│       ├── __init__.py
│       ├── services.py
│       ├── static/
│       ├── templates/
│       │   ├── index.html
│       ├── server.py
│       ├── wsgi.py