当前位置 : 主页 > 编程语言 > 其它开发 >

flask框架安装使用

来源:互联网 收集:自由互联 发布时间:2022-05-20
简单的flaskのhello, world 开篇 个人工作中需要用到flask,所以特地搭建了用一下,熟悉操作 一、centos云服务器环境下 falsk作为一个python的轻量级的web框架,基本上相当于一个内核,各种功
简单的flaskのhello, world 开篇

个人工作中需要用到flask,所以特地搭建了用一下,熟悉操作

一、centos云服务器环境下

falsk作为一个python的轻量级的web框架,基本上相当于一个内核,各种功能都需要扩展第三方来实现,比如数据库操作需要用到flask-sqlalchemy,引入脚本需要用到flask-script,本地化时间需要用到flask-monent。。。。。。就这点来看,它就区别于Django的功能齐全,因为flask是一个自定义式的。啥?我这个刚准备熟悉框架的人为什么那么熟练?查资料啊!

安装

因为flask是python的一个框架,而python又是使用包来管理的,所以你可以直接用pip来下载安装,然后在代码中引入使用即可。这样比较,老本行的c/c++的确是很不方便啊,虽然它志不在此。

pip3 install flask

因为我的云服务器配置了python2和python3,但我没有把pip管理的链接都连成pip,所以使用还是pip3,安装完以后可以查看一下安装列表(pip3 list)。

简单的hello, world

我们的测试都是经典的hello, world嘛,这次也不例外。

from flask import Flask
app = Flask(__name__)

#设置flask定时任务
@app.route('/hello')
def hello():
        return "Hello, world."

if __name__ == '__main__':
        #设置调试模式,实际使用不需要
        app.debug = True
        app.run()

运行结果:

[root@centos web_test]# python3 flask_test.py
 * Serving Flask app 'flask_test' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 126-917-774

然后我们另开一个连接,用curl访问一下

#作为客户端的访问
[root@centos ~]# curl http://localhost:5000/hello
Hello, world.[root@centos ~]# 

#作为服务端的响应记录
127.0.0.1 - - [27/Feb/2022 10:48:31] "GET / HTTP/1.1" 200 -

首先来说一下上面代码的作用吧,上面就是引用了flask模块中的Flask类,然后实例化,接下来设定路由,其实就是针对http访问的url格式来确定响应,比如我上面路由设定函数hello的参数为'/hello',url格式就是"http://localhost:5000/hello"或者"http://127.0.0.1:5000/hello",你问我为什么是本地访问?我也不知道哇,云服务器的访问规则我都开了,对应端口的TCP访问应该是ok的呀,真的是。估计是和现在所在的开发者模式有关。

二、windows下的安装使用

在windows下的安装使用和linux下没有什么区别,所以这里就给一些结果对照就行。

pip install flask

因为是在windows下,所以结果的查看就可以很直观了,直接浏览器打开http://localhost:5000/hello即可

然后我们的服务端运行结果是这样的:

PS C:\Users\abaaba\Desktop> python test.py
 * Serving Flask app 'test' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 421-642-904
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [27/Feb/2022 11:39:16] "GET /hello HTTP/1.1" 200 -
127.0.0.1 - - [27/Feb/2022 11:39:16] "GET /favicon.ico HTTP/1.1" 404 -

三、外网访问

在上面我们都是进行的主机访问主机的试验,那如何使得外网可以访问?以centos7云服务器为例,首先要做的,就是flask的参数设置。
因为我们是通过run函数启动服务器,所以我们想让外界访问也是指定其参数即可。

app.run(host='0.0.0.0', port=5000)

然后就是配置云服务器的安全组,使得外界可以访问。

点击个人服务器进去

然后是设置安全组的入站规则

可以在已有规则上进行编辑,也可以自行自定义,不懂的话,它有个"教我设置"功能,在里面进行即可。

嗯,搞定了以后,我们就服务器运行,然后随便浏览器访问"http://IP:5000/hello"即可(注意,这里的IP是指你的云服务器的外网IP,别搞错)然后访问结果类似下图

(这是我用了内网IP来进行访问的示范,想说明访问失败的情况)
不出所料的话,访问是会被拒的,因为还需要设置云服务器的防火墙。

#防火墙开启5000端口的TCP访问服务,并且是永远开启
firewall-cmd --zone=public --add-port=5000/tcp --pernament
#重启防火墙使设置生效
firewall-cmd --reload

上面已经配置好了防火墙了,你问我为什么开启TCP服务?因为http服务就是在tcp为协议基础实现的,然后我们来访问一下

视角切换到服务器的运行:

113.99.148.199 - - [28/Feb/2022 00:32:22] "GET /hello HTTP/1.1" 200 -
113.99.148.199 - - [28/Feb/2022 00:32:23] "GET /favicon.ico HTTP/1.1" 404 -

可以看到,我们的服务器响应了外部的http协议的get请求,然后实验结束。

需要注意的是,常说服务端和客户端,其实它们并不代表主机实体,而是进程实体,同一台主机可以作为提供各种服务的服务端也可以作为享受各种服务的客户端。

上一篇:Go Exec 僵尸与孤儿进程
下一篇:没有了
网友评论