目 录
1.python利用flask框架和tornado框架搭建api微服务——HelloWorld的实现(一)
2.python利用flask框架和tornado框架搭建api微服务——结合html网页实现get和post(二)
3.python利用flask框架和tornado框架搭建api微服务——连接数据库返回带参求情结果(三)
4.python利用flask框架和tornado框架搭建api微服务——python虚拟机启动API(四)
5.python利用flask框架和tornado框架搭建api微服务——Linux下查看某个端口对应的进程并kill进程的操作(关闭API服务进程)(五)
6.python利用flask框架和tornado框架搭建api微服务——完善API文档以及API调用(六)
背 景
记得刚学程序的时候,大神就语重心长的说到,要学会再虚拟机上调试程序,虚拟机内最坏的结果,大不了程序崩溃了就是卸载虚拟机,不然,在本地,程序崩溃后,大型软件注册表呀,安装的插件不兼容,极有可能是要重装系统的,这个思路呢,当然是非常重要的,万幸,python是有虚拟机的。
python虚拟环境 virtualenv
主要是解决多个项目之间的第三方依赖包的互相隔离,不冲突
正常使用pip instll
第三方包,都是将第三方包安装在python的Lib/site-packages
目录下,使用虚拟环境下的pip install
命令会将第三方包安装到虚拟环境目录下的Lib/site-packages
目录下,从而实现环境隔离。
python虚拟环境virtualenv的安装
python虚拟环境virtualenv
很简单,只需要正常的pip install
安装即可,具体代码如下:
pip install virtualenv
virtualenv erp # 该命令执行后会在当前路径下新建erp(虚拟环境名称)目录,并将python命令和pip等命令和文件在erp目录下做一份复制。激活该虚拟环境后所有的命令执行和操作都是在该目录下的独立操作,不会影响到python及其他虚拟环境
python虚拟环境virtualenv的开启
开启代码指令如下
- windows:
erp\Scripts\activate.bat
- linux:
source erp/bin/activate
开启后后,命令行会显示以虚拟环境的名erp
开头,如下:
(erp) (base) [hadoop@shucang-10 iot_location_desc_match]$
python虚拟环境virtualenv的退出
退出虚拟环境,退出后,回到正常的目录环境下,命令行会显示开头回复正常。
- windows:
erp) D:\python>erp\Scripts\deactivate.bat
- linux:
deactivate
python虚拟环境virtualenv下使用nohup启动API
nohup
(NO Hang UP) 顾名思义,就是不间断的运行,即就算关闭了开启了API的窗口,进程也是会在后台运行了的,nohup默认输出内容会到nohup.out中,即如果如下代码启动话的,当前目录会新增一个nohup.out文件记录启动日志。
nohup python iot_location_desc_match.py
那我们启动写的更完美点,具体代码如下,成功启动后,你会看到屏端打印出 [1] 3238
表示这个程序以进程号3238在运行了。
nohup python iot_location_desc_match.py >> ./log/iot_location_desc_match.log 2>&1 &
[1] 3238
整句代码解析
2>&1
0 表示stdin标准输入,用户键盘输入的内容
1 表示stdout标准输出,输出到显示屏的内容
2 表示stderr标准错误,报错内容
2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
&为后台运行
第一条代码,以python环境不间断的运行iot_location_desc_match.py这个脚本,并且将脚本输出的内容重定向输入./log/iot_location_desc_match.log中(>>意为追加,如果用>会让其中的内容清空)
iot_location_desc_match.py >> ./log/iot_location_desc_match.log 和
iot_location_desc_match.py 1>>./log/iot_location_desc_match.log相同,只是1(标准输入)被省略了,而后面的./log/iot_location_desc_match.log 2>&1 又将2(错误内容)输入到标准输出,然后前面的标准输出又输入到./log/iot_location_desc_match.log中,意思错误和标准内容都会输出到./log/iot_location_desc_match.log中,其实代码可拆成两块。
1.nohup python iot_location_desc_match.py 1>> ./log/iot_location_desc_match.log &
2.nohup python iot_location_desc_match.py 2>>./log/iot_location_desc_match.log &
上面代码就是将错误和标准都输出到./log/iot_location_desc_match.log,最初的代码只是简化了。
而加2>&1中的&是为了区别文件1和1(标准输出),假如为2>1,那么不就成了将错误内容输出到文件1中。