浅谈Python使用Bottle来提供一个简单的web服务


Posted in Python onDecember 27, 2017

介绍

今天有个不正经的需求,就是要快速做一个restful api的性能测试,要求测试在海量作业数据的情况下客户端分页获取所有作业的性能。因为只是一个小的的测试工作,所以就想到了Bottle框架作为Web服务器,这里就简单说说怎样使用Bottle框架。

安装

pip install bottle

启动服务

运行下面的python脚本即可启动一个Web服务。

from bottle import route, run, request

@route('/hello')
def hello():
  return "Hello World!"

run(host='0.0.0.0', port=8080, debug=True)

测试,使用如下命令行来测试服务

curl http://localhost:8080/hello

提供Restful API

服务端

1.由于我需要根据参数来返回部分结果(比如:根据偏移量和分页大小),因此可以使用Bottle的动态路来实现,当然用参数实现也是可以的。
2.这里假定我设置的请求url为:/jobs//
3.这里为了测试方便并没有返回作业信息,而是用offset和size作为json结果返回。

下面是服务器端测试代码

import json
from bottle import route, run, request

@route('/jobs/<offset:int>/<size:int>')
def get_jobs(offset, size):
  d = {"offset": offset, "size": size}
  return json.dumps(d)

run(host='0.0.0.0', port=8080, debug=True)

客户端

import httplib, json

c = httplib.HTTPConnection('localhost', 8080)
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
c.request('GET', '/jobs/123/321', '{}', headers)
s = c.getresponse().read().strip()
print json.loads(s)

总结

以上就是本文关于浅谈Python使用Bottle来提供一个简单的web服务的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
python+pyqt实现右下角弹出框
Oct 26 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
详解Python中的编码问题(encoding与decode、str与bytes)
Sep 30 Python
python 实现Requests发送带cookies的请求
Feb 08 Python
Python 中random 库的详细使用
Jun 03 Python
python通过函数名调用函数的几种方法总结
Jun 07 Python
python编程实现12306的一个小爬虫实例
Dec 27 #Python
python导出chrome书签到markdown文件的实例代码
Dec 27 #Python
Python类的继承和多态代码详解
Dec 27 #Python
快速查询Python文档方法分享
Dec 27 #Python
Java及python正则表达式详解
Dec 27 #Python
python matplotlib画图实例代码分享
Dec 27 #Python
python爬虫使用cookie登录详解
Dec 27 #Python
You might like
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
基于python中theano库的线性回归
2018/08/31 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
Django配置跨域并开发测试接口
2020/11/04 Python
python搜索算法原理及实例讲解
2020/11/18 Python
利用python实现汉诺塔游戏
2021/03/01 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
《三袋麦子》教学反思
2014/03/02 职场文书
明星员工获奖感言
2014/08/14 职场文书
信访工作个人总结
2015/03/03 职场文书
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers