2017-07-18 37 views
0

我創建了一個使用命令行並調用該程序的應用程序。燒瓶錯誤json未序列化

from flask import Flask, jsonify, make_response, request 

import os 
import subprocess 
import json 
app = Flask(__name__) 

@app.route('/api/v1.0/qanda/', methods=['GET']) 

def people_api(): 
    text = request.args.get('text') 
    Answer = subprocess.Popen(['programcall', repr(text)],stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0] 

    if text is None: 
      make_response(jsonify({'error': 'Missing text parameter'}), 400) 
    return jsonify(Answer) 
app.run('0.0.0.0') 

我想要得到的是當我點擊瀏覽器URL時應用程序的PRETTY JSON OUTPUT。我試圖顯示輸出,但它不是漂亮的Json,大部分時間jsonify都給出了錯誤:JSON沒有被序列化。

請告訴我,通過它我可以用我的應用程序
一個錯誤,我能越過這是顯示正確結果的方式:

Answer = Answer + subprocess.Popen(['programcall', repr(text)],stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0] 
TypeError: can only concatenate list (not "bytes") to list 

回答

0

您需要wait爲您subprocess之前,你可以完成讀取輸出。這就是爲什麼有時你會得到錯誤,有時候並不是因爲有時過程完成並且你有輸出。