Description
version
python version: 3.11.7
flask version: 3.1.0
flask-pymongo version: 3.0.1
Code
File:/path/app/extensions.py
from flask_pymongo import PyMongo
mongo = PyMongo()
File:/path/app/init.py
from flask import Flask as _Flask
from app.extensions import mongo
class Flask(_Flask):
from app.core.json_encoder import DefaultJSONProvider
json_provider_class = DefaultJSONProvider
def create_app(flask_env):
app = Flask(__name__)
app.config.from_object(secure)
mongo.init_app(app)
return app
File:/path/app/core/json_encoder.py
from datetime import time as datetime_time, date as datetime_date, datetime
from flask.json.provider import DefaultJSONProvider as _DefaultJSONProvider
from app.core.error import ServerError
def _default(o):
if hasattr(o, 'keys') and hasattr(o, '__getitem__'):
o.lock_fileds()
return dict(o)
if isinstance(o, datetime):
return o.strftime('%Y-%m-%d %H:%M:%S')
if isinstance(o, datetime_date):
return o.strftime('%Y-%m-%d')
if isinstance(o, datetime_time):
return o.strftime("%H:%M:%S")
if isinstance(o, bytes):
return o.decode('utf-8')
raise ServerError()
class DefaultJSONProvider(_DefaultJSONProvider):
default = staticmethod(_default)
ERROR:
[2025-02-12 11:07:23 +0800] [17224] [ERROR] Error handling request /v1/api_format/validators_service
Traceback (most recent call last):
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/gunicorn/workers/base_async.py", line 55, in handle
self.handle_request(listener_name, req, client, addr)
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/gunicorn/workers/ggevent.py", line 128, in handle_request
super().handle_request(listener_name, req, sock, addr)
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/gunicorn/workers/base_async.py", line 108, in handle_request
respiter = self.wsgi(environ, resp.start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/app.py", line 1536, in call
return self.wsgi_app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/app.py", line 1514, in wsgi_app
response = self.handle_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask_cors/extension.py", line 194, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/app.py", line 1511, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/app.py", line 919, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask_cors/extension.py", line 194, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/app.py", line 809, in handle_user_exception
return self.ensure_sync(handler)(e) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/app/core/hook_func.py", line 38, in framework_error
raise error
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/app.py", line 917, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/app.py", line 902, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/app/api/v1/api_format.py", line 43, in validators_service
return Success(datas)
^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/app/core/error.py", line 90, in init
self.data = jsonify(data)
^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/app/core/utils.py", line 19, in jsonify
return current_app.json.response(*args, **kwargs).json
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask/json/provider.py", line 105, in response
return self._app.response_class(self.dumps(obj), mimetype="application/json")
^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/flask_pymongo/helpers.py", line 111, in dumps
return json_util.dumps(obj)
^^^^^^^^^^^^^^^^^^^^
File "/Users/cys/Me_cys/data/Company_data/yong_wei/project/cmdb/.venv/lib/python3.11/site-packages/bson/json_util.py", line 473, in dumps
return json.dumps(_json_convert(obj, json_options), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/init.py", line 231, in dumps
return _default_encoder.encode(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/encoder.py", line 258, in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/encoder.py", line 180, in default
raise TypeError(f'Object of type {o.class.name} '
TypeError: Object of type date is not JSON serializable