Вызовите приложение Flask с помощью пушки с модулем python

92
14

Я хочу запустить веб-приложение из CLI примерно так:

 user@server:~$ my_app web --start

Веб-проект был разработан с помощью Flask, и я хочу выполнить веб-приложение с помощью пушки в режиме deamon.

Но я не понимаю, как выполнить из модуля 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)

Очевидно, что это не сработает. Я хочу что-то, что позволяет мне управлять сервером (start, status, stop и more) из модуля 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

спросил(а) 2021-01-19T20:18:51+03:00 9 месяцев, 1 неделя назад
1
Решение
102

Я решил это с 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

ответил(а) 2021-01-19T20:18:51+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема