You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
The text was updated successfully, but these errors were encountered:
I rewrote the DefaultJSONProvider class under flask.json.provider to support dates and times. However, I noticed that flask_pymongo directly rewrites the JSONProvider base class under flask.json.provider, which causes my modified DefaultJSONProvider class to have no effect.
Uh oh!
There was an error while loading. Please reload this page.
version
python version: 3.11.7
flask version: 3.1.0
flask-pymongo version: 3.0.1
Code
File:/path/app/extensions.py
File:/path/app/init.py
File:/path/app/core/json_encoder.py
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
The text was updated successfully, but these errors were encountered: