2014-12-22 22 views
12

Tôi đang cố hiển thị danh sách các thiết bị được kết nối trong trình duyệt sử dụng bình. Tôi kích hoạt bình trên cổng 8000:"TypeError": đối tượng 'list' không phải là bình có thể gọi được

trong server.py:

@server.route('/devices',methods = ['GET']) 
def status(): 
    return app.stat() 

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

trong app.py:

def stat(): 
    return(glob.glob("/dev/tty57") + glob.glob("/dev/tty9")) 

Và đây là thử nghiệm của tôi:

url = "http://127.0.0.1:8000" 

response = requests.get(url + "").text 
print response 

nhưng tôi tiếp tục gặp lỗi này:

"TypeError": 'list' object is not callable. 

Tôi có gặp lỗi khi kiểm tra xem ttyUSB, ... và các thiết bị khác có tồn tại không?

+2

Những dòng bạn đang nhận được lỗi? –

+0

là có mã bị thiếu hoặc tại sao bạn đã nhập yêu cầu và nối tiếp trong app.py? –

+0

Trình duyệt trả về "Lỗi máy chủ nội bộ". khi tôi sử dụng "gunicorn server: server -b 0.0.0.0:8000" lệnh tôi thấy lỗi.In app.py khi tôi thay đổi glob.glob ... để trả về "kết quả kiểm tra" mọi thứ hoạt động tốt. – N45

Trả lời

22

Sự cố là điểm cuối của bạn đang trả về danh sách. Flask chỉ thích các loại trả về nhất định. Hai rằng có lẽ là phổ biến nhất là

  • một đối tượng Response
  • một str (cùng với unicode bằng Python 2.x)

Bạn cũng có thể trả lại bất kỳ callable, chẳng hạn như một chức năng .

Nếu bạn muốn trả lại danh sách các thiết bị bạn có một vài tùy chọn. Bạn có thể quay trở lại danh sách như là một chuỗi

@server.route('/devices') 
def status(): 
    return ','.join(app.statusOfDevices()) 

hoặc bạn nếu bạn muốn để có thể đối xử với mỗi thiết bị như một giá trị riêng biệt, bạn có thể trở lại một phản ứng JSON

from flask.json import jsonify 

@server.route('/devices') 
def status(): 
    return jsonify({'devices': app.statusOfDevices()}) 
    # an alternative with a complete Response object 
    # return flask.Response(jsonify({'devices': app.statusOfDevices()}), mimetype='application/json') 
+0

Cảm ơn! nó hoạt động hoàn hảo. – N45

Các vấn đề liên quan