python搭建web服务过程
anacanda安装下载anacanda下载anacanda官网下载太慢:官网下载可以到国内镜像下载:镜像下载地址##安装anacanda运行命令:bash Anaconda3-2018.12-Linux-x86_64.sh然后开启安装,在安装过程中,基本上不断按回车或者yes默认就行了。设置环境变量vi /etc/profile#Anacondaexport PATH=$PATH:/home/s
python搭建web服务过程
下载anacanda
安装anacanda
运行命令:
bash Anaconda3-2018.12-Linux-x86_64.sh
然后开启安装,在安装过程中,基本上不断按回车或者yes默认就行了。
设置环境变量
vi /etc/profile
#Anaconda
export PATH=$PATH:/home/software/anaconda3/bin
source /etc/profile
测试
打开终端(Terminal),输入python3,如果显示如下图,则表示安装成功。
[root@slthtbijdqe ancanda]# python3 -V
Python 3.8.5
安装虚拟环境
安装成功后需要创建新的虚拟环境:
-
首先在所在系统中安装Anaconda。可以打开命令行输入conda -V检验是否安装以及当前conda的版本。
-
conda常用的命令。
1)conda list 查看安装了哪些包。
2)conda env list 或 conda info -e 查看当前存在哪些虚拟环境
3)conda update conda 检查更新当前conda
-
创建python虚拟环境。
使用 conda create -n your_env_name python=X.X(2.7、3.6等)命令创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。
-
使用激活(或切换不同python版本)的虚拟环境。
打开命令行输入python --version可以检查当前python的版本。
使用如下命令即可 激活你的虚拟环境(即将python的版本改变)。
Linux: source activate your_env_name(虚拟环境名称)
Windows: activate your_env_name(虚拟环境名称)
这是再使用python --version可以检查当前python版本是否为想要的。
-
对虚拟环境中安装额外的包。
使用命令conda install -n your_env_name [package]即可安装package到your_env_name中
-
关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)。
使用如下命令即可。
Linux: source deactivate
Windows: deactivate
-
删除虚拟环境。
使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。
-
删除环境中的某个包。
使用命令conda remove --name your_env_name package_name 即可。
安装pip
创建虚拟环境,命名为python3.6
conda create -n python3.6 python=3.6
切换虚拟环境
source activate python3.6
pip是python的包管理工具,安装pip
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本
$ sudo python get-pip.py # 运行安装脚本
使用python连接MongoDB
安装
[root@slthtbijdqe anaconda3]# source activate python3.6
(python3.6) [root@slthtbijdqe anaconda3]# python -V
Python 3.6.12 :: Anaconda, Inc.
(python3.6) [root@slthtbijdqe anaconda3]# python -m pip install pymongo
编写的实例read.py:
#!/usr/bin/python
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:8008/")
dblist = myclient.list_database_names()
print(dblist)
for db in dblist:
print ("dbname:%s" %(db) )
testDb=myclient['test']
print(testDb)
mycollection=testDb["test"]
print(mycollection)
for x in mycollection.find():
print(x)
运行read.py
python read.py
输出如下:
['admin', 'config', 'local', 'mbg', 'mbg_test', 'test']
dbname:admin
dbname:config
dbname:local
dbname:mbg
dbname:mbg_test
dbname:test
Database(MongoClient(host=['localhost:8008'], document_class=dict, tz_aware=False, connect=True), 'test')
Collection(Database(MongoClient(host=['localhost:8008'], document_class=dict, tz_aware=False, connect=True), 'test'), 'test')
{'_id': ObjectId('5ff81dddb5fb103b56db1751'), 'title': 'this is update test'}
{'_id': ObjectId('5ff81dfbc945da0e62b4e908'), 'title': 'test'}
使用python搭建web服务
安装flask
pip install flask
server端代码如下
编写代码server.py,内容如下:
#!/usr/bin/python
from flask import Flask,jsonify,request,abort
import json
import logging
from logging.handlers import RotatingFileHandler
from threading import Thread
import time
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
return '<h1>Home</h1>'
@app.route('/signin', methods=['GET'])
def signin_form():
return '''<form action="/signin" method="post">
<p><input name="username"></p>
<p><input name="password" type="password"></p>
<p><button type="submit">Sign In</button></p>
</form>'''
@app.route('/signin', methods=['POST'])
def signin():
try:
app.logger.info(request.headers)
app.logger.info(type(request.json))
app.logger.info(request.json)
app.logger.info(request.json['name'])
data=request.data
app.logger.info(data)
except BaseException :
app.logger.error("发生了异常")
return '<h3>Bad request param .</h3>'
else:
# 需要从request对象读取表单内容:
t = Thread(target=sayhi, args=('caoyong','to you',"线程号1"))
t.start()
result={"name":request.json['name']}
return result
def sayhi(name,input,number):
for i in range(1,10):
if number == "线程号1":
time.sleep(1)
app.logger.info("这是线程号:%s - %s say hello %s - %s" % (number,name, str(i),input))
else :
time.sleep(1)
app.logger.info("线程号:%s - %s say hello %s - %s 休息1秒" % (number,name, str(i),input))
if __name__ == '__main__':
app.run(host='0.0.0.0',port=30003,debug=True)
启动服务
后台启动server端服务,日志重定向到nohup中
nohup python server.py 2>&1 &
验证服务
客户端代码client.py
from urllib import parse, request
import json
parameter = {"name": "caoyong111"}
# json串数据使用
parameter = json.dumps(parameter).encode(encoding='utf-8')
# 普通数据使用
# parameter = parse.urlencode(parameter).encode(encoding='utf-8')
print('入参:' + str(parameter))
header_info = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',"Content-Type": "application/json"}
url = "http://localhost:30003/signin"
req = request.Request(url=url, data=parameter, headers=header_info)
res = request.urlopen(req)
res = res.read()
print('返回参数:' + str(res))
print('返回参数,转码utf-8后:' + str(res.decode(encoding='utf-8')))
启动client端
python client.py
client端log如下:
查看服务端log
tail -f nohup
log内容如下:
可以看到服务端同步返回报文,启动线程执行异步任务
如果anconda下载不下来的话,需要将.condarc修改成如下内容:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
show_channel_urls: true
#去掉-default
修改pip源
修改.conf(Linux)/.ini(Windows)
Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)。输入或修改内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,然后新建文件pip.ini,即 %HOMEPATH%\pip\pip.ini,输入或修改内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
2.2 命令提示符
直接一行代码搞定
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
1
下面提供常用的一些国内镜像源
阿里云 http://mirrors.aliyun.com/pypi/simple/
豆瓣http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
华中科技大学http://pypi.hustunique.com/
原文链接:https://blog.csdn.net/weixin_42640909/article/details/112142215
更多推荐
所有评论(0)