我正在研究如何用Python开发一个体面的Web应用程序。 由于我不想要一些高阶结构,所以我select了轻量级的Flask框架 。 时间会certificate这是否是正确的select。
所以,现在我已经build立了一个mod_wsgi的Apache服务器,我的testing网站运行良好。 但是,我想通过使网站自动重新加载py或模板文件中的任何更改来加速开发例程。 我发现网站的.wsgi文件中的任何更改都会导致重新加载(即使在Apacheconfiguration文件中没有WsgiScriptReloading On),但是我仍然需要手动生成它(即插入额外的换行符,保存)。 有什么办法,当我编辑一些应用程序的py文件如何导致重新加载? 或者,我期望使用IDE刷新.wsgi文件给我?
stream媒体服务器问题与gunicorn和烧瓶和Nginx
Nginx和Flask-socketio Websockets:活着但不是消息?
当前推荐的方式(Flask> = 0.11)是使用flask命令行工具。
http://flask.pocoo.org/docs/0.11/server/
例:
$ export FLASK_APP=main.py $ export FLASK_DEBUG=1 $ python -m flask run
或者用一个命令:
$ FLASK_APP=main.py FLASK_DEBUG=1 python -m flask run
我更喜欢python -m flask run而不是flask run因为前者也与virtualenv 。
如果你想要比默认的( 5000 )添加 – 端口选项不同的端口。
例:
$ python -m flask run --port 8080
更多选项可用于:
$ python -m flask run --help
如果您正在讨论测试/开发环境,那么只需使用调试选项即可。 当代码改变发生时,它会自动重新加载烧瓶应用程序。
app.run(debug=True)
或者,从外壳:
$ export FLASK_DEBUG=1 $ flask run
http://flask.pocoo.org/docs/quickstart/#debug-mode
在测试/开发环境中
werkzeug调试器已经有一个“自动重新加载”功能可以通过执行下列操作之一来启用:
app.run(debug=True)
要么
app.debug = True
如果需要,也可以使用单独的配置文件来管理所有的设置。 例如,我使用'DEBUG = True'选项'settings.py'。 导入这个文件也很容易。
app.config.from_object('application.settings')
但是这不适合于生产环境。
生产环境
就我个人而言,我选择Nginx + uWsgi通过Apache + mod_wsgi出于几个性能的原因,而且还有配置选项。 触摸重新加载选项允许您指定一个文件/文件夹,这将导致uWsgi应用程序重新加载您新部署的烧瓶应用程序。
例如,您的更新脚本会将您最新的更改拉下来,并触及“reload_me.txt”文件。 你的uWsgi ini脚本(显然是由Supervisord保持的)在这个脚本中有这样一行:
touch-reload = '/opt/virtual_environments/application/reload_me.txt'
我希望这有帮助!
uwsgi --py-autoreload 1
示例uwsgi-dev-example.ini:
[uwsgi] socket = 127.0.0.1:5000 master = true virtualenv = /Users/xxxx/.virtualenvs/sites_env chdir = /Users/xxx/site_root module = site_module:register_debug_server() callable = app uid = myuser chmod-socket = 660 log-date = true workers = 1 py-autoreload = 1
site_root / __ init__.py
def register_debug_server(): from werkzeug.debug import DebuggedApplication app = Flask(__name__) app.debug = True app = DebuggedApplication(app,evalex=True) return app
然后运行:
uwsgi --ini uwsgi-dev-example.ini
注意:这个例子也启用了调试器。
我走这条路线来模仿生产尽可能与我的Nginx设置。 简单地运行它的内置web服务器后面的Nginx烧瓶应用程序将导致错误的网关错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。