windows下使用Twisted发布flask应用

公司用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虚拟环境,结构应该和我的差不多,库文件、执行文件都在里面。可以写个批处理运行应用。
python虚拟目录
建立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的应用了。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值