Merge pull request #6744 from freqtrade/orjson

Use ORJSON for http responses
This commit is contained in:
Matthias 2022-04-29 17:58:42 +02:00 committed by GitHub
commit b60411b918
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 4 deletions

View File

@ -2,7 +2,7 @@ import logging
from ipaddress import IPv4Address from ipaddress import IPv4Address
from typing import Any, Dict from typing import Any, Dict
import rapidjson import orjson
import uvicorn import uvicorn
from fastapi import Depends, FastAPI from fastapi import Depends, FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
@ -24,7 +24,7 @@ class FTJSONResponse(JSONResponse):
Use rapidjson for responses Use rapidjson for responses
Handles NaN and Inf / -Inf in a javascript way by default. Handles NaN and Inf / -Inf in a javascript way by default.
""" """
return rapidjson.dumps(content).encode("utf-8") return orjson.dumps(content, option=orjson.OPT_SERIALIZE_NUMPY)
class ApiServer(RPCHandler): class ApiServer(RPCHandler):

View File

@ -27,6 +27,8 @@ py_find_1st==1.1.5
# Load ticker files 30% faster # Load ticker files 30% faster
python-rapidjson==1.6 python-rapidjson==1.6
# Properly format api responses
orjson==3.6.8
# Notify systemd # Notify systemd
sdnotify==0.3.2 sdnotify==0.3.2

View File

@ -57,6 +57,7 @@ setup(
'pycoingecko', 'pycoingecko',
'py_find_1st', 'py_find_1st',
'python-rapidjson', 'python-rapidjson',
'orjson',
'sdnotify', 'sdnotify',
'colorama', 'colorama',
'jinja2', 'jinja2',

View File

@ -13,7 +13,6 @@ import uvicorn
from fastapi import FastAPI from fastapi import FastAPI
from fastapi.exceptions import HTTPException from fastapi.exceptions import HTTPException
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
from numpy import isnan
from requests.auth import _basic_auth_str from requests.auth import _basic_auth_str
from freqtrade.__init__ import __version__ from freqtrade.__init__ import __version__
@ -985,7 +984,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets, is_short,
assert_response(rc) assert_response(rc)
resp_values = rc.json() resp_values = rc.json()
assert len(resp_values) == 4 assert len(resp_values) == 4
assert isnan(resp_values[0]['profit_abs']) assert resp_values[0]['profit_abs'] is None
def test_api_version(botclient): def test_api_version(botclient):