安装flask
pip install flask 非常方便
我的python是2.7.9 32位包,flask版本是:
C:\Users\jack-z>pip show flask
---
Metadata-Version: 1.1
Name: Flask
Version: 0.10.1
Summary: A microframework based on Werkzeug, Jinja2 and good intentions
Home-page: http://github.com/mitsuhiko/flask/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD
Location: c:\python27\lib\site-packages
Requires: Werkzeug, Jinja2, itsdangerous
------------------------------------------------------------------------------------------------------------------------------------------------------------------
测试flask入门代码
from flask import Flask, jsonify import time app = Flask(__name__) tasks = [ { 'id': 1, 'title': u'Buy groceries', 'description': u'Milk, Cheese, Pizza, Fruit, Tylenol', 'done': False }, { 'id': 2, 'title': u'Learn Python', 'description': u'Need to find a good Python tutorial on the web', 'done': False } ] @app.route('/todo/api/v1.0/tasks', methods=['GET']) def get_tasks(): # time.sleep(60000) return jsonify({'tasks': tasks}) @app.route('/', methods=['GET']) def hellword(): # time.sleep(60000) return "hello world!" @app.route('/projects/') def projects(): return 'The project page' @app.route('/about') def about(): return 'The about page' if __name__ == '__main__': app.run(host = '0.0.0.0', threaded=True)
app.run(host='0.0.0.0',threaded=True)
host='0.0.0.0' 是其他机子也可以访问
threaded=True 是多线程模式
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
还自己写了测试代码:
# -*- coding:utf-8 -*- import pycurl import cStringIO import threading def itestMain(): while True: buf0 = cStringIO.StringIO() c0 = pycurl.Curl() try: # data = 'params={"data":{"jszh":"422324198511172810","dabh":"330105011812"},"code":0,"msg":""}' c0.setopt(c0.URL, 'http://127.0.0.1:5000/todo/api/v1.0/tasks') c0.setopt(c0.CONNECTTIMEOUT, 5) c0.setopt(c0.TIMEOUT, 60) c0.setopt(c0.WRITEFUNCTION, buf0.write) # c0.setopt(c0.POSTFIELDS, data) c0.perform() except Exception,e: # c0.close() pass try: response_body = buf0.getvalue() print '返回结果:',response_body except Exception,e: # c0.close() pass buf0.close() c0.close() class itestQueryThread(threading.Thread): def run(self): itestMain() def Main(): for i in range(100): Obj = itestQueryThread() Obj.start() if __name__ == '__main__': Main() while True: import time time.sleep(10)
使用了pycurl来测试flask代码。
=================================================================================================
Apache的ab工具也可以测试压力,这个工具还不错,可以一用,先安装Apache。
----------------
ab的参数详细解释
普通的测试,使用-c -n参数配合就可以完成任务
格式: ./ab [options] [http://]hostname[:port]/path
参数:
-n 测试的总请求数。默认时,仅执行一个请求
-c 一次并发请求个数。默认是一次一个。
-H 添加请求头,例如 ‘Accept-Encoding: gzip’,以gzip方式请求。
-t 测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p 包含了需要POST的数据的文件.
-T POST数据所使用的Content-type头信息。
-v 设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
-w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i 执行HEAD请求,而不是GET。
-C -C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。
参考http://go2linux.garron.me/linux/2010/04/how-benchmark-stress-your-apache-nginx-or-iis-server-718