如何在Python中通过烧瓶发送双端队列收集

时间:2019-06-17 12:29:53

标签: python flask deque

我正在尝试通过Flask在一个简单的烧瓶应用程序中发送一个充满整数的双端队列集合。

我面临的问题是双端队列无法序列化

from flask import Flask, jsonify
import collections


d=collections.deque(maxlen=10)


app=Flask(__name__)
@app.route('/')

def index():
    for i in range(10):
        d.append(i)
    return jsonify(d)

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

输出错误为

TypeError: Object of type deque is not JSON serializable

我如何序列化通过烧瓶发送的双端队列收集?考虑到我需要通过另一台python服务器上的双端队列对发送的整数进行一些数学算法。

2 个答案:

答案 0 :(得分:1)

Python双端队列类似于list(在许多方面)。我知道两者之间的主要区别在于,更改操作(例如pop())与双端队列效率更高。

所以您不尝试对列表进行json而不是双端队列吗?

答案 1 :(得分:1)

您可以创建一个自定义编码器,该编码器知道如何将双端队列转换为JSON:

from json import JSONEncoder
from collections import deque

class DequeEncoder(JSONEncoder):
    def default(self, obj):
       if isinstance(obj, deque):
          return list(obj)
       return JSONEncoder.default(self, obj)

并像这样使用它:

d = deque(("A", "B", "C"))
json.dumps(d, cls=DequeEncoder)