python 搭建一个http服务的小例子
一、创建Server
1.Dos 命令
python -m BaseHTTPServer [port]

默认端口是8000,
2.Python 脚本启动
#coding:utf-8
'''
Created on 2018��10��29�� @author: Administrator
'''
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
import MySQLdb
from sqlalchemy import create_engine
import pandas as pd
import json def handleReq(path):
print path
#http://127.0.0.1:8000/itype=90&market=0&code=000001&startNum=0&size=100&shtTQ=1&ptype=0
#解析URL带的请求参数
reqParam = {}
allReq = path.split('/')
if len(allReq) > 1:
req = allReq[1].split('&')
for strParam in req:
param = strParam.split('=')
if len(param) > 1:
reqParam[param[0]] = param[1] gpcode = ""
if reqParam.has_key("market"):
strMarket = ""
if reqParam["market"] == '0':
strMarket = "SZ"
elif reqParam["market"] == '1':
strMarket = "SH" if reqParam.has_key("code"):
strCode = reqParam["code"] if len(strMarket) > 0:
gpcode = strMarket + strCode conn = create_engine("mysql://root:123456@172.16.8.110/quant?charset=utf8")
sql = "select * from quant_stk_calc_d_fct_kdj where gscode = 'FCT_KDJ' and gpcode = '{0}' order by ymd desc limit {1},{2}".format(gpcode, reqParam["startNum"], reqParam["size"])
dfR = pd.read_sql(sql,conn) datas = []
for i in range(0,len(dfR["ymd"])):
date = int(dfR["ymd"][i])
print type(date)
k = round(dfR["f1"][i], 4)
d = round(dfR["f2"][i], 4)
j = round(dfR["f3"][i], 4)
dictData = {"iDate":date,"mField":{"K":k, "D":d, "J":j}}
datas.append(dictData) return datas class HTTPHandle(BaseHTTPRequestHandler):
def do_GET(self):
if self.path != "/favicon.ico":
print "path:",self.path datas = handleReq(self.path) #处理URL请求参数,根据参数获取相应数据
jsonStr = json.dumps(datas)
print jsonStr self.protocol_version = "HTTP/1.1"
self.send_response(200)
self.send_header("Content-type", "application/json")
self.end_headers()
self.wfile.write(jsonStr) def startServer():
httpServer = HTTPServer(("127.0.0.1", 8000), HTTPHandle)
httpServer.serve_forever() if __name__ == '__main__':
startServer()
二、浏览器访问
服务开启后,在浏览器输入网址访问服务器资源
http://127.0.0.1:8000/itype=90&market=0&code=000001&startNum=0&size=100&shtTQ=1&ptype=0
效果:


BaseHTTPServer模块说明,参见:http://blog.sina.com.cn/s/blog_9e9f16d10102x7fc.html
报错:json 报错'xxx is not JSON serializable'的处理方法,参见:https://www.cnblogs.com/SZxiaochun/p/9875050.html
另参见:https://www.jianshu.com/p/4221c2b835a3
python 搭建一个http服务的小例子的更多相关文章
- 在开发环境中,自己搭建一个ssl环境(小例子)
做项目的时候自己总结的一些小例子 public class Test { public static void setSSLProperty() { Security.addProvider(new ...
- 利用OpenStreetMap(OSM)数据搭建一个地图服务
http://www.cnblogs.com/LBSer/p/4451471.html 图 利用OSM数据简单发布的北京地图服务 一.OSM是什么 开放街道图(OpenStreetMap,简称O ...
- 通过express快速搭建一个node服务
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.可以理解为是运行在服务端的 JavaScript.如果你是一个前端程序员,不太擅长像PHP.Python或Ruby等 ...
- 搭建一个web服务下载HDFS的文件
需求描述 为了能方便快速的获取HDFS中的文件,简单的搭建一个web服务提供下载很方便快速,而且在web服务器端不留临时文件,只做stream中转,效率相当高! 使用的框架是SpringMVC+HDF ...
- 【LINUX】——linux如何使用Python创建一个web服务
问:linux如何使用Python创建一个web服务? 答:一句话,Python! 一句代码: /usr/local/bin/python -m SimpleHTTPServer 8686 > ...
- 用Python输出一个杨辉三角的例子
用Python输出一个杨辉三角的例子 这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维 ...
- Python搭建简易HTTP服务(3.x版本和2.x版本的)
废话不多说,我们工作时经常会用到需要HTTP服务,如果不想搞那些复杂的Apache.IIS服务器等,这时我们就可以用python帮我们搭建一个简单的服务器.操作如下: 1.下载并安装一个python: ...
- 如何使用koa搭建一个简单服务
1.首先检测是否已经有node环境? 把Windows的黑窗体的命令行工具调用出来 敲击命令行node -v , 然后,就可以看到这个打印出了一个版本号,这就证明我们的node.js已经是安装 ...
- 在django中如何从零开始搭建一个mock服务
mock概念 mock 就是模拟接口返回的一系列数据,用自定义的数据替换接口实际需要返回的数据,通过自定义的数据来实现对下级接口模块的测试.这里分为两类测试:一类是前端对接口的mock,一类是后端单元 ...
随机推荐
- [CF453B]Little Pony and Harmony Chest
[CF453B]Little Pony and Harmony Chest 题目大意: 给你一个长度为\(n(n\le100)\)的正整数序列\(A(A_i\le30)\),求一个正整数序列\(B\) ...
- [ZOJ2069]Greatest Least Common Multiple
[ZOJ2069]Greatest Least Common Multiple 题目大意: 给定一个正整数\(n\),将其分成若干个正整数之和,最大化这些数的LCM.保证答案小于\(10^{25}\) ...
- Django——photo
要点: models 图片类型文件要使用models.ImageField(upload='文件夹名') 普通文件使用FileField 时间类型使用DatetimeField(auto_now_ad ...
- web.config中的ExtensionlessUrlHandler-Integrated-4.0
对于像MVC这种比较特殊的URL,例如 www.store.com/books/GetById/2 因为没有文件后缀名,IIS通常会无法解析,返回403或者404错误.ASP.NET v4.0增加了新 ...
- Python 之 __new__() 方法与实例化(转)
_new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 Python 中存在于类里面的构造方法 __init__() 负责将类的实例化,而在 __init__() ...
- poj2376 Cleaning Shifts(区间贪心,理解题意)
https://vjudge.net/problem/POJ-2376 题意理解错了!!真是要仔细看题啊!! 看了poj的discuss才发现,如果前一头牛截止到3,那么下一头牛可以从4开始!!! # ...
- log4j2自定义Appender(输出到文件/RPC服务中)
1.背景 虽然log4j很强大,可以将日志输出到文件.DB.ES等.但是有时候确难免完全适合自己,此时我们就需要自定义Appender,使日志输出到指定的位置上. 本文,将通过两个例子说明自定义APP ...
- mysql 正则表达式判断是否数字
select ('123a' REGEXP '[^0-9.]'); --‘123a'中含有字符'a' 输出结果为1 mysql中常量true输出为1 false输出为0
- Python的ctypes 和pyinstaller
这几天在学习python的爬虫, 无意中看到一篇博文 Python爬虫之自制英汉字典 发现里面的ctypes 和pyinstaller 还不了解,这边文章说白了就是你输入英文, python读取你的输 ...
- 【Spring】bean动态注册到spring
/* * http://412887952-qq-com.iteye.com/blog/2348445 * http://www.jb51.net/article/106558.htm * https ...