I am new to Python and just learning it when I am working on this project, and this problem really confuses me. Here is my code:
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 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')
I call /set/phone/40 . All is good so far. Then I call /get/phone . Not as good as we would like. Here's the 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
Using the flag debugger, I see that in the last frame the application looks 40!

How did this happen and how can I solve it?
python flask typeerror
JJJollyjim
source share