当前位置:   article > 正文

windows环境下的Flask应用部署_windows 不是flask

windows 不是flask

因为一个好奇心,所以开始学习Flask,自己做一些简单的工具,用来解决工作上的问题.在过程中,遇到了这样的一个问题.我应该把我的应用部署到哪里?因为我只有一个windows server2008,网上粗略搜索到的,都是基于linux部署的.为了让我的APP能运行的更加省心,我整理了一下windows上部署flask的方案.

 

由于flask本身运行不稳定,需要将其部署在可以容纳WSGI应用的服务器上,客户服务器是windows server 2008,原来发布解决方案是在Linux下Nginx+uWSGI,uWSGI不能运行在windows下。于是梳理可以在windows下运行方法。

  • Gevent:是一个 Python 并发网络库,它使用了基于 libev 事件循环的 greenlet 来提供一个高级同步 API
  • Twisted Web:Twisted Web 是一个 Twisted 自带的网络服务器,是一个成熟的、异步的、 事件驱动的网络库。 Twisted Web 带有一个标准的 WSGI 容器,该容器可以使用 twistd 工具运行命令行来控制。
  • tornado:异步非阻塞的web服务,有类似的文章介绍,flask官方文档中没有推荐使用。
  • Apache:老牌web服务安装MOD_WSGI后可以运行

嗯...这里使用了Twisted Web.

 

Twisted 安装:

方案1:
可以尝试pip安装下:(在我的win10下,尝试了下,不一定能成功)

pip install twisted

方案2:
到这个网址下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/
下载和自己python版本对应的twisted:  
如我的python是3.6 win32,我就下载了Twisted-17.9.0-cp36-cp36m-win32.whl  
然后执行安装:pip install Twisted-17.9.0-cp36-cp36m-win32.whl  
剩下需要依赖的,程序会自动下载下来

方案3:
工作环境是内网,与外网物理隔离.所以我们可以先外网安装好,打包虚拟环境到内网。在内网安装先安装相同版本的python,再启动虚拟环境,启动安装好的程序。
 

Twisted 测试 

  1. # 新建文件twisted_web.py 录入如下代码
  2. from twisted.web.wsgi import WSGIResource
  3. from twisted.internet import reactor
  4. def application(environ, start_response):
  5. start_response('200 OK', [('Content-type', 'text/plain')])
  6. return ['Hello, world!']
  7. resource = WSGIResource(reactor, reactor.getThreadPool(), application)
  8. # 在cmd下执行:
  9. twistd -n web --wsgi twisted_web.application

其中twisted_web是文件名,application是函数application(environ, start_response).(因为环境问题,可能会有坑..下文会有解决方案)


Twisted 和Flask

一个简单的FlaskDemo(main.py)

  1. from flask import Flask,render_template
  2. app = Flask(__name__)
  3. @app.route('/')
  4. def hello():
  5. return render_template("index.html")
  6. if __name__ == '__main__':
  7. app.run(debug=True)

CMD中执行:
twistd -n web --wsgi main.app
其中main是文件名,app是app = Flask(__name__)中变量

em..然后遇到了这个信息:

twistd: No such WSGI application: 'main.app'

网上查了下,原因是twistd没有正确找到环境变量,所以,我们只要设置PYTHONPATH为当前目录即可.这里提供了一个简单的启动脚本(run.bat):

  1. set PYTHONPATH=.
  2. twistd -n web --port tcp:8080 --wsgi main.app

参考:

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/526061
推荐阅读
相关标签
  

闽ICP备14008679号