首页 > 解决方案 > 如何在不使用命令的情况下运行 Flask Web 应用程序?

问题描述

我正在使用python __init__.py命令在本地从命令行运行我的烧瓶网络应用程序。我想在不使用任何命令的情况下运行/部署烧瓶网络。就像 spring 网络应用程序一样。 初始化.py

from flask import Flask, url_for
from flask import jsonify

from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware
import db_config

app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/my-web-app'

def simple(env, resp):
   resp(b'200 OK', [(b'Content-Type', b'text/plain')])
   return [b'Hello my app User']

@app.route("/")
def hello():
   return "Hello world"

@app.route('/test', methods=['GET'])
def get_tasks():
   db = db_config.getconnection();
   cur = db.cursor()
   cur.execute("SELECT * FROM emp")
   items = cur.fetchall()
   print(items)
   db.commit()
   cur.close()
   db.close()
   return jsonify({'tasks': items})

app.wsgi_app = DispatcherMiddleware(simple, {'/my-web-app': app.wsgi_app})
if __name__ == "__main__":
   app.run()

有没有办法创建烧瓶网络应用程序的 .WAR 文件并将其部署在服务器上?并在我们发出请求时启动 Web 应用程序。

标签: pythonflask

解决方案


有没有办法从 Flask 应用程序创建 Java .WAR 文件?有可能,但我真的不推荐。Python 不是 Java。

有没有办法在服务器上部署 Flask 应用程序?哦,是的,很多方法。Flask 文档中的部署选项页面列出了几个选项,包括:

  • 托管选项:在 Heroku、OpenShift、Webfaction、Google App Engine、AWS Elastic Beanstalk、Azure、PythonAnywhere 上部署 Flask
  • 自托管选项:使用独立的 WSGI 容器(Gunicorn、uWSGI、Gevent、Twisted)、使用 Apache mod_wsgi、使用 FastCGI 或使用老式香草 CGI 运行您自己的服务器。

在自托管选项中,我肯定会推荐 nginx 而不是 Apache 作为前端 Web 服务器,并且 nginx 内置了对 uWSGI 协议的支持,然后您可以使用该uwsgi命令运行您的应用程序。

但我绝对建议您研究其中一种托管选项,而不是从事运行自己的 Web 服务器的业务,尤其是在您刚刚起步的情况下。Google App Engine 和 AWS Elastic Beanstalk 都是作为初学者开始运行云 Web 应用程序的好平台。


推荐阅读