美文网首页
flask & post

flask & post

作者: Plenari | 来源:发表于2019-08-22 23:10 被阅读0次

1,跨域

app = Flask(__name__)
api = Api(app)

@app.after_request
def after_request(response):
  response.headers.add('Access-Control-Allow-Origin', '*')
  #或者,跨域。
  #response.headers['Access-Control-Allow-Origin']= '*'
  response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
  response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS')
  return response

if __name__ == '__main__':
    app.run()

被app.after_request修饰过的函数会在请求得到相应后返回给用户前被调用,也就是说,这个时候,请求已经被app.route装饰的函数响应过了,已经形成了response,我们在这个时候做一些操作,flask有一个插件叫 flask-compress,是对响应结果进行压缩的,它就是用after_request的这个机制,在response返回前对数据进行了压缩,如果你有别的想要操作的事情,同样可以使用after_request来完成。

接收文件

客户端:

import requests
files={'file':(filename,open(filename,'rb'))}
requests.port(url,files=files)

服务端

from flask import request 
@app.route('/')
def index():
data=request.file
file=data['file']
filename=file.filename
file.save(path)




接收二进制

可以二进制数据encode转成base64,然后转成json。
最后把base64字符串decode成二进制数据。

flask 多进程多线程

  • 注意:多进程或多线程只能选择一个,不能同时开启
import os
from flask import Flask
import time
app=Flask(__name__)
@app.route('/')
def index():
    return 'hello'

@app.route('/get')
def get():
    time.sleep(2)
    return str(os.getpid())
if __name__=="__main__":
    # 多进程,每一个新连接都会新建一个进程,这样的话进程数设置为5还有什么意义?
    app.run(host='0.0.0.0',port=5000,processes=6)

import os
from flask import Flask
import threading
import time
app=Flask(__name__)
class data:
    ident=[]
@app.route('/')
def index():
    return 'hello'


@app.route('/get')
def get():
    time.sleep(5)
    #return str(os.getpid())
    print(time.time()-stime)
    print(threading.currentThread().ident)
    return str(threading.currentThread().ident)
if __name__=="__main__":
    stime=time.time()
    app.run(host='0.0.0.0',port=5000,threaded=True)

  • 调用四次的结果如下
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
10.874930620193481
140233200768768
192.168.119.1 - - [13/Dec/2019 18:00:32] "GET /get HTTP/1.1" 200 -

15.882457494735718
140233192376064
192.168.119.1 - - [13/Dec/2019 18:00:37] "GET /get HTTP/1.1" 200 -

20.891161680221558
140233200768768
192.168.119.1 - - [13/Dec/2019 18:00:42] "GET /get HTTP/1.1" 200 -

25.901167392730713
140233192376064
192.168.119.1 - - [13/Dec/2019 18:00:47] "GET /get HTTP/1.1" 200 -

  • 只有两个线程在工作?

相关文章

网友评论

      本文标题:flask & post

      本文链接:https://www.haomeiwen.com/subject/djbnsctx.html