欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

windows下使用Twisted发布flask应用

程序员文章站 2022-10-07 13:12:00
公司用flask开发应用,由于flask本身运维不稳定,需要将其部署在可以容纳WSGI应用的服务器上,客户服务器是windows server 2008,原来发布解决方案是在Linux下Nginx+uWSGI,uWSGI不能运行在windows下。于是梳理可以在windows下运行方法。Gevent:是一个 Python 并发网络库,它使用了基于 libev 事件循环的 greenlet 来提供一个高级同步 APITwisted Web:Twisted Web 是一个 Twisted 自带的网络服务器...

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

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

安装twisted

pip install -i https://pypi.douban.com/simple/  twisted 

新建文件twisted_web.py 录入如下代码

from twisted.web.wsgi import WSGIResource
from twisted.internet import reactor

def application(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/plain')]) return ['Hello, world!'] resource = WSGIResource(reactor, reactor.getThreadPool(), application) 

在cmd键入如下命令运行

twistd -n web --wsgi twisted_web.application #其中twisted_web是文件名,application是函数application(environ, start_response) 

以上是在twisted框架下建立的服务,做好的flask应用怎么搞,建个文件flask_web.py

from flask import Flask
app = Flask(__name__) @app.route('/') def index(): return 'Hello World' if __name__ == '__main__': app.run() 

在cmd的文件目录下运行如下命令

twistd -n web --wsgi flask_web.app #其中flask_web是文件名,app是app = Flask(__name__)中变量 

flask被正常运行。
到这里没有什么新鲜内容,很多文章中都介绍过。
上面两个命令运行时有没有类似这样的提示:twistd: No such WSGI application: 'flask_web.app’
明明是当前目录下运行的找不到?有办法

set PYTHONPATH=. #设置为当前目录 

开发时候都建立了python虚拟环境,结构应该和我的差不多,库文件、执行文件都在里面。可以写个批处理运行应用。
windows下使用Twisted发布flask应用
建立run.bat内容如下

set PYTHONPATH=.;venv/Lib;venv/Lib/site-packages set PATH=%PATH%;venv/Scripts
twistd -n web --port tcp:8080 --wsgi run.app 

这样在cmd执行run.bat就可以运行flask的应用了。

本文地址:https://blog.csdn.net/bamboo_2001/article/details/108243592