基于flask的轻量级webapi开发入门-从搭建到部署

注:本文的代码开发工作均是在python3.7环境下完成的。

关键词:python flask tornado webapi

在python虚拟环境中开发flask应用

参考:

Python3虚拟环境 venv搭建轻量级虚拟环境

关于Python3中venv虚拟环境

Flask框架web开发:零基础入门

如何在某.py文件中调用其他.py内的函数

Flask 路由

Flask解决跨域的问题

python3.3以上的环境中直接提供了venv模块创建虚拟环境,该模块代替了原virtualenv,建议直接使用python3最新版本。

虚拟环境创建示例

创建一个名为flask的虚拟环境,系统会创建一个flask文件夹,文件夹中包含了该版本python的依赖环境,里面有三个include,Lib,Scripts三个子文件夹。

 python -m venv flask

进入Scripts文件夹,运行activate.bat激活虚拟环境(deactivate.bat关闭虚拟环境,ps环境中运行Activate.ps1激活)

 activate.bat

激活虚拟环境后,可通过pip安装flask模块

 pip install flask

在flask文件夹同级下,建立APP文件夹,在APP文件夹内新建 run.py 文件,创建一个Hello Word的flask服务,完整代码如下:

from flask import Flask # 引用flask库
app= Flask(__name__) # 定义路由
@app.route('/')
def hello_world():
return 'Hello,World!' if __name__=="__main__":
app.run(debug=True,port=8080) # 开启调试模式,程序访问端口为8080

运行 run.py

 python run.py

在浏览器中访问:http://127.0.0.1:8080/ ,成功后返回 Hello,World!

利用tornado和nginx将程序部署在生产环境服务器上

参考:

将Flask应用程序部署在nginx,tornado的简单方法

windowsServer环境下的flask+nginx部署方案

Windows 下Flask Nginx Tornado 协同工作的简单例子

安装 tornado

pip install tornado

在 run.py 同级目录下创建 tornado_server.py 文件,作用是托管app.py。同时将 app.py 中的端口号去掉,在 tornado_server.py 中定义访问端口号。 tornado_server.py 代码如下:

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from run import app # 这里和run.py对应 http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000) #flask默认的端口
IOLoop.instance().start()

运行 tornado_server.py

python.exe tornado_server.py

配置nginx

如果之前启动了nginx,在cmd中批量杀死所有nginx进程

taskkill   /fi   "imagename  eq   nginx"  /f

配置nginx中的反向代理,使其指向tornado_server.py中的地址和端口

server {
listen 80;#端口
server_name 123.123.123.123;#公网的ip地址,也可以是你没有加www的网址 #charset koi8-r; #access_log logs/host.access.log main; #location /test {
# root C:\python\workspace;
# index test.html;
#} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
location / {
proxy_pass http://localhost:5000;#所有访问80端口的,都会转到5000端口
}

启动 nginx ,访问ngix提供的80端口

start nginx

python 虚拟环境迁移

方法有几种,生成环境服务器可以连接互联网的情况下,推荐使用requirements.txt方式

  • 激活开发虚拟环境,执行命令,将包依赖信息保存在requirements.txt文件中
pip freeze > requirements.txt
  • 在生产环境服务器建立虚拟环境,利用requirements.txt文件还原依赖包
pip install -r requirements.txt

生产服务器中的虚拟环境如果是开发环境的拷贝,最好先pip uninstall -ry requirements.txt,再pip install -r requirements.txt

利用nssm将python程序封装成windows服务

参考:

使用nssm部署windows服务启动应用

定时启动多个cmd的python程序,并且批处理关闭各个程序,一键启动conda虚拟环境和运行多个python

将python脚本文件封装成bat文件,如 run.bat

E:\develop\py3fcapi\flask\Scripts\activate.bat && python E:\develop\py3fcapi\app\tornado_server.py

利用nssm将bat文件封装为windows服务,可以在生产环境中更好的运行。nssm安装配置见参考文档

基于flask的轻量级webapi开发入门-从搭建到部署的更多相关文章

  1. ArcGIS API for Silverlight/ 开发入门 环境搭建

    Silverlight/ 开发入门 环境搭建1 Silverlight SDK下载ArcGIS API for Microsoft Silverlight/WPF ,需要注册一个ESRI Gloab ...

  2. 基于Flask实现博客开发--准备工作

    背景说明 本项目是基于<深入理解flask>一书,主要是用来记录学习历程和交流心得,所以写得不好请大神勿喷. 准备工作 virtualenv介绍 也许 Virtualenv 是你在开发中最 ...

  3. Python基于Flask框架配置依赖包信息的项目迁移部署小技巧

    一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚 ...

  4. windows Android开发环境快速搭建和部署

    windows安装Android的开发环境相对来说比较简单,本文写给第一次想在自己Windows上建立Android开发环境的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对初级 ...

  5. Python开发入门与实战15-IIS部署

    15. IIS部署 前面的章节我们完成了基本的业务功能的开发,本章节我们来说说python django项目如何部署到实际的运行环境,完成开发系统的发布工作. Python Django 项目部署发布 ...

  6. CH01基于Ubuntu系统的ZYNQ-7000开发环境的搭建

    1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx 2017.4 实验内容: 国内Window ...

  7. 基于webpack的Vue.js开发环境快速搭建

    1. 安装node node下载地址 2. 安装淘宝 NPM npm 是node.js 的包管理工具. 镜像命令地址 #命令行: npm install -g cnpm 3. 安装vue # 全局安装 ...

  8. Python开发入门与实战16-APACHE部署

    16. Windows平台apache部署 本章节我们简要的描述一下如何在windows平台部署apache的django站点. Python Django 项目部署发布到windows apache ...

  9. 基于Flask的Web应用程序插件式结构开发

    事实上,很多应用程序基于插件式结构开发,可以很方便了扩展软件的功能,并且这些功能完全可以依托于第三方开发者,只要提供好接口和完备文档,比如wordpress.谷歌火狐浏览器等. Python这样的动态 ...

随机推荐

  1. MyBatis 学习记录1 一个简单的demo

    主题 最近(N个月前)clone了mybatis的源码..感觉相比于spring真的非常小...然后看了看代码觉得写得很精简...感觉我的写代码思路和这个框架比较相似(很难具体描述...就是相对来说比 ...

  2. 当一个项目中同时存在webroot和webcontext时

    当一个项目中同时存在webroot和webcontext时,注意一定要删除那些没在使用的.还有要发布其中一个想要的目录到服务器中,具体方法是  选择相应工程-----properties-----de ...

  3. margin+absolute布局:右栏固定主内容自适应 demo

    margin+absolute布局:右栏固定主内容自适应 demo 头部 Aside侧边栏区域 Main主内容区域 底部 #demo{width:80%;margin:auto;height:300p ...

  4. 打包jar文件并自动运行

    1,首先在eclipse 或MyEclipse 中测试通过,没有问题,(每次修改要update Maven) 2,修改pom.xml ---把build中改为<excludes> < ...

  5. mysql varchar类型转换int类型

    select * from gyzd_yysinfo order by cast(yysid as SIGNED INTEGER) 或者 select * from gyzd_yysinfo orde ...

  6. SPI子系统分析之一:框架

    内核版本:3.9.5 SPI子系统概述: 一个SPI主控制器对应一条SPI总线,当然在系统中有唯一的总线编号. SPI总线上有两类设备: 其一是主控端,通常作为SOC系统的一个子模块出现,很多嵌入式M ...

  7. 清除html中的标记,只留下文字

    /// <summary>/// 清除html中的标记,只留下文字./// </summary>/// <param name="HTML">& ...

  8. cdn path b 问题

    主节点内存和磁盘最好大点,许多默认东西都放主节点了 mysql 配置文件修改后server-id = 1 1.hive 启动不起来 去配置里关掉 严格的 Hive Metastore 架构验证 hiv ...

  9. Linux实战教学笔记14:用户管理初级(上)

    第十四节 用户管理初级(上) 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,账号管理 1.1 管理用户命令汇总 命令 注释说明(特殊颜色的必须掌握) useradd增 ...

  10. Finite State Transducers

    一, 简介 Finite State Transducers 简称 FST, 中文名:有穷状态转换器.在自然语言处理等领域有很大应用,其功能类似于字典的功能(STL 中的map,C# 中的Dictio ...