Flask快速搭建简单服务器

Flask快速搭建简单服务器

Flask真是一个强大且简介的web框架,可以快速搭建web服务器,简单,高效。

近期需要做一个本地服务器,用来接收量化平台传回来的交易信号,然后调用对应的交易API,以及交易信号的存储。

考虑到只是简单的接收信号和少量数据存储,而且没有高并发的要求,所以实用sqlite3作为后端存储。

下面记录下简单的Flask发送和接收http请求和参数解析。

项目名称是:autotrade

1.Flaskf服务器

# autotrade/__init__.py
# __init__.py 定义全局的app路由
# 然后将其他模块由app装饰后的函数导入,flask即可识别所有的请求入口

from flask import Flask
from multiprocessing import Process

# 配置全局app
app = Flask(__name__)
# 导入index中定义的所有函数
from autotrade.server.index import *

def run_index():
    # 启动web服务器,使用多线程方式,接收所有http请求
    app.run(host='0.0.0.0', port=5000, threaded=True)

def run_orders():
    # 启动查询交易程序
    while True:
        print('执行相应的交易程序')
        time.sleep(3)

def main():
    # 主程序
    # 创建子进程
    jobs = []
    jobs.append(Process(target=run_index))
    jobs.append(Process(target=run_orders))
    # 启动子进程
    for job in jobs:
        job.start()

    # 等待子进程结束返回
    for job in jobs:
        job.join()

if __name__ == '__main__':
    main()

2.http请求接口

# autotrade/server/index.py
# 在这里写对应的http接口函数
import datetime
from flask import Flask, request

# 引用路由
from autotrade.server import app

@app.route('/')
def index():
    """index.html主页返回"""
    return 'I have receive you request !'


@app.route('/order', methods=['GET', 'POST', 'DELETE'])
def order():
    """/order.html接口,接收get请求,解析url中的参数"""
    print(request.url)  # 请求的http网址
    data = request.args.to_dict()  # 解析http中的参数
    # to something here
    return str(data)  # 注意,不管什么问题,一定要返回,就算是返回None

然后我们执行 autotrade/__init__.py启动flask服务器,在浏览器中输入网址 localhost:5000 或者 localhost:5000/sync ,观察python的输出以及浏览器的返回结果,查看服务器是否正常启动。

3.request请求

使用request的GET或者POST方法,实现数据回传。

import requests
data = {'id':123, 'name':'XiaoMing'}  # 请求的参数,或者说是要传输的数据
url='http://localhost:5000/sync'      # 请求的flask地址
r=requests.get(url,params=data)       # 获取服务器响应
print(r.status_code)                  # 打印状态,200表示正常返回
print(r.text)                         # 打印返回结果

至此,用Flask搭建简单的服务器就完成了,实现是简答的数据回传功能,是不是很简单啊。当然,flask可以实现很复杂的网站设计,因为知乎就是用flask开发的。

你可能感兴趣的:(web)