python - 如何在不使用命令的情况下运行 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 应用程序。
解决方案
有没有办法从 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 应用程序的好平台。
推荐阅读
- node.js - 从 Node.js 服务器上传媒体文件到 MongoDB
- jenkins - 使用 websocket 断开 Jenkins 代理
- java - 为了创建反向 Java 调试器,检测 Java 类的最佳方法是什么?
- macos - OpenCl.framework Mac OS Mojave 中的 Missed Headers 文件夹
- mysql - 带有 if 和 CONCAT 的 MySQL 语句
- node.js - 异步映射中的异步函数未解决 Promise
- spring - Azure Spring Cloud - 在从 Azure KeyVault 导入证书期间添加 TLS/SSL 绑定失败
- getstream-io - getstream.io - 如何设置 Channel.Config 以禁用反应?
- c# - 如何验证是否在 C# 中下载了正确的文件?
- python - 嗨,我是 Python 新手,我正在编写这个我遇到问题的程序