
Flask框架是一个以轻量级著称的Web开发框架,近两年来在Web领域获得了极高的人气,这里我们就来看如何使用Python的Flask框架来搭建第一个Web应用程序。
Python是一种跨平台的计算机程序设计语言是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。当你在Ubuntu下使用nginx和uwsgi部署flask时,uwsgi服务器的默认配置可能会导致问题。uwsgi默认会创建一个主进程和一个或多个工作进程,而当nginx代理请求时,它可能会将请求发送到已经关闭的工作进程,导致超时错误。使用killall -s INT uwsgi命令杀掉uwsgi进程可以解决这个问题,因为这个命令会向uwsgi主进程发送SIGINT信号,通知它关闭所有工作进程。然后,当你再次启动uwsgi时,它会重新创建一组新的工作进程,这些工作进程应该都能够正常工作。
为了避免这种情况,你可以修改uwsgi的配置,使它只创建一个工作进程。这样,当nginx代理请求时,它就只会将请求发送到一个工作进程,而不会出现超时错误。你可以在uwsgi配置文件中添加processes = 1来实现这一目的。例如:
==============
[uwsgi]
socket = /tmp/uwsgisock
chdir = /path/to/your/app
wsgi-file = apppy
callable = app
processes = 1
==============
希望这些信息能够帮助你解决问题。
Python搭建网站,利用现成的框架还是挺简单的。在这里举一个例子-利用Flask搭建一个网站。
Flask
Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2。Flask创建一个应用很简单,只需要一行代码就可以创建一个应用。一个最小的应用看起来像这样:
直接执行pythonhellopy,就可以看到页面就可以访问了,这只是官方给出的一个示例,方便学习。
应用初始化
所有Flask程序都必须创建一个程序实例。Web服务器使用一种名为Web服务器网关接口(WebServerGatewayInterface,WSGI)的协议,把接收自客户端的所有请求都转交给这个对象处理。程序实例是Flask类的对象,经常使用下述代码创建:
Flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python的__name__变量就是所需的值。
路由和视图函数
客户端(例如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间关系的程序称为路由。在Flask程序中定义路由的最简便方式,是使用程序实例提供的approute修饰器,把修饰的函数注册为路由。下面的例子说明了如何使用这个修饰器声明路由:
index()函数注册为程序根地址的处理程序。如果部署程序的服务器域名为,在浏览器中访问p>
启动服务器
程序实例用run方法启动Flask集成的开发Web服务器:
__name__=='__main__'是Python的惯常用法,在这里确保直接执行这个脚本时才启动开发Web服务器。如果这个脚本由其他脚本引入,程序假定父级脚本会启动不同的服务器,因此不会执行apprun()。服务器启动后,会进入轮询,等待并处理请求。轮询会一直运行,直到程序停止,比如按Ctrl-C键。
Flask开发的网站实例
本示例中网站的结构如下
启动服务器界面
访问WEB页面
整个是利用Flask自己搭建的一个WEB页面,数据库试过mysql和mongodb都可以正常访问。整体感觉Flask的学习成本会比Django低,而且也比Django更灵活。
1、打开Internert信息管理查看IIS是否启动,且默认网站时候已经开启;2、打开>
1、首先了解什么是 restful 架构?
rest :representational state transfer表现层状态转化
资源 :网络上的一个实体,或者说一个具体的信息。每种资源对应一个特定的URI,要获取这个资源,就是访问这个URI就可以
表现层 :representation 把资源呈现出来的形式,叫做表现层,在>我们先写一个最基本的flask应用:
demopy
from flask import Flask
app = Flask(name)
@approute('\')
def index():
return 'Hello World'
if __name__ == __main__:
apprun()
运行这个py文件,打开浏览器访问127001:5000就能看到显示Hello World的页面
如果让这个flask引用监听来自公网ip的请求,理论上你跑此程序的机器就相当于一个服务器了,然而这个服务器并不完美,所以我们需要nginx和gunicorn来增加它的功能,让它真刀真q上生产环境的时候能按要求运行。
flask自带的WSGI框架性能很差劲,只能适用于开发环境调试使用。我们用专业一点的gunicorn(还有很多其他优秀的框架)替代flask自带的WSGI框架。
配置完后,通过命令’/usr/local/bin/gunicorn -b127001:5000‘启动应用。打开浏览器访问127001:5000,同样能够得到返回页面
然而gunicorn也仅仅是一个python的WSGI框架而已,要让它真正处理来自互联网的各类访问功能还是有点欠缺,这时候就需要用到大名鼎鼎的nginx 服务器来替gunicorn遮风挡雨了。
Ubuntu下安装nginx可以用命令
sudo apt-get install nginx
安装后需要进行下配置:
cd /etc/nginx/sites-available
sudo vi test (test为配置名称,可以根据自己项目进行命名)
test文件的配置为:
server {
listen 80; # 监听80端口
location / {
proxy_pass >
前言: 之前在本地测试项目的过程中一直使用python apppy的方式来启动项目,这种方式在本地测试的话还可以,但是在生产环境的话就不能使用这种方式。
原因:
1可能会出现无响应情况
2无法支持高并发和多线程
3无法合理利用服务器资源
生产环境: Centos7、Python3
需要模块: Gunicon、Nginx、Flask
一、安装Gunicorn
Gunicorn是一个高效的Web服务器,地位相当于Java中的Tomcat。简单来说gunicorn封装了>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)