flask学习之路(一)

原创 2015年07月07日 20:12:05

安装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


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)