Tôi mới dùng Python và chỉ học nó khi tôi làm việc trong dự án này, và vấn đề này thực sự gây nhầm lẫn cho tôi. Đây là mã của tôi:Flask: TypeError: đối tượng 'int' không được gọi là
from flask import Flask
from datetime import datetime
# Setup app
app = Flask(__name__)
# Initialize data dict
data = {}
# Pretty-formats a time difference
def formatdifference(delta):
seconds = delta.total_seconds()
if (seconds < 60):
return "{seconds} seconds ago" % {"seconds": seconds}
return "{minutes} minutes ago" % {"minutes": seconds/60}
# Sets a device battery level
@app.route("/set/<device>/<int:battery>")
def set(device, battery):
data[device] = (battery, datetime.now())
return "done"
# Get's a device battery level
@app.route("/get/<device>")
def get(device):
if not device in data:
return "No heartbeats"
devicedata = data[device]
delta = datetime.now() - devicedata[1]
if (delta.total_seconds() > 10):
return "Last heartbeat {diff}" % {"diff": formatdifference(delta)}
return devicedata[0]
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Tôi gọi /set/phone/40
. Tất cả tốt cho đến nay. Sau đó, tôi gọi số /get/phone
. Không tốt lắm. Đây là traceback:
TypeError: 'int' object is not callable
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1478, in full_dispatch_request
response = self.make_response(rv)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1577, in make_response
rv = self.response_class.force_type(rv, request.environ)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/wrappers.py", line 825, in force_type
response = BaseResponse(*_run_wsgi_app(response, environ))
File "/usr/local/lib/python2.7/dist-packages/werkzeug/test.py", line 855, in run_wsgi_app
app_iter = app(environ, start_response)
TypeError: 'int' object is not callable
Sử dụng trình gỡ lỗi của bình, tôi có thể thấy trong khung hình cuối cùng, ứng dụng có vẻ là 40!
Làm thế nào để điều này xảy ra và làm cách nào để giải quyết?
Bạn có nghĩa là 'trở lại str (devicedata [0]) '? – falsetru
@falsetru Có vẻ như tôi đã làm! Điều đó giải quyết nó, cảm ơn! – JJJollyjim