Improve responses for evaluate get endpoints

This commit is contained in:
Matthias 2023-05-24 21:01:39 +02:00
parent 4c52109fa3
commit 9e75c768c0
3 changed files with 28 additions and 16 deletions

View File

@ -376,6 +376,12 @@ class WhitelistResponse(BaseModel):
method: List[str] method: List[str]
class WhitelistEvaluateResponse(BaseModel):
result: Optional[WhitelistResponse]
error: Optional[str]
status: str
class DeleteTrade(BaseModel): class DeleteTrade(BaseModel):
cancel_order_count: int cancel_order_count: int
result: str result: str

View File

@ -21,7 +21,8 @@ from freqtrade.rpc.api_server.api_schemas import (AvailablePairs, Balances, Blac
PairListsResponse, PerformanceEntry, Ping, PairListsResponse, PerformanceEntry, Ping,
PlotConfig, Profit, ResultMsg, ShowConfig, Stats, PlotConfig, Profit, ResultMsg, ShowConfig, Stats,
StatusMsg, StrategyListResponse, StrategyResponse, StatusMsg, StrategyListResponse, StrategyResponse,
SysInfo, Version, WhitelistResponse) SysInfo, Version, WhitelistEvaluateResponse,
WhitelistResponse)
from freqtrade.rpc.api_server.deps import get_config, get_exchange, get_rpc, get_rpc_optional from freqtrade.rpc.api_server.deps import get_config, get_exchange, get_rpc, get_rpc_optional
from freqtrade.rpc.api_server.webserver_bgwork import ApiBG from freqtrade.rpc.api_server.webserver_bgwork import ApiBG
from freqtrade.rpc.rpc import RPCException from freqtrade.rpc.rpc import RPCException
@ -372,19 +373,24 @@ def pairlists_evaluate(payload: PairListsPayload, background_tasks: BackgroundTa
} }
@router.get('/pairlists/evaluate', response_model=WhitelistResponse, tags=['pairlists']) @router.get('/pairlists/evaluate', response_model=WhitelistEvaluateResponse, tags=['pairlists'])
def pairlists_evaluate_get(): def pairlists_evaluate_get():
if ApiBG.pairlist_error:
raise HTTPException(status_code=500,
detail='Pairlist evaluation failed: ' + ApiBG.pairlist_error)
if ApiBG.pairlist_running: if ApiBG.pairlist_running:
raise HTTPException(status_code=202, detail='Pairlist evaluation is currently running.') return {'status': 'running'}
if ApiBG.pairlist_error:
return {
'status': 'failed',
'error': ApiBG.pairlist_error
}
if not ApiBG.pairlist_result: if not ApiBG.pairlist_result:
raise HTTPException(status_code=400, detail='Pairlist evaluation not started yet.') return {'status': 'pending'}
return ApiBG.pairlist_result return {
'status': 'success',
'result': ApiBG.pairlist_result
}
@router.get('/freqaimodels', response_model=FreqAIModelListResponse, tags=['freqai']) @router.get('/freqaimodels', response_model=FreqAIModelListResponse, tags=['freqai'])

View File

@ -1645,13 +1645,13 @@ def test_api_pairlists_evaluate(botclient, tmpdir):
rc = client_get(client, f"{BASE_URI}/pairlists/evaluate") rc = client_get(client, f"{BASE_URI}/pairlists/evaluate")
assert_response(rc, 400) assert_response(rc)
assert rc.json()['detail'] == 'Pairlist evaluation not started yet.' assert rc.json()['status'] == 'pending'
ApiBG.pairlist_running = True ApiBG.pairlist_running = True
rc = client_get(client, f"{BASE_URI}/pairlists/evaluate") rc = client_get(client, f"{BASE_URI}/pairlists/evaluate")
assert_response(rc, 202) assert_response(rc)
assert rc.json()['detail'] == 'Pairlist evaluation is currently running.' assert rc.json()['status'] == 'running'
body = { body = {
"pairlists": [ "pairlists": [
@ -1675,8 +1675,8 @@ def test_api_pairlists_evaluate(botclient, tmpdir):
rc = client_get(client, f"{BASE_URI}/pairlists/evaluate") rc = client_get(client, f"{BASE_URI}/pairlists/evaluate")
assert_response(rc) assert_response(rc)
response = rc.json() response = rc.json()
assert response['whitelist'] == ['ETH/BTC', 'LTC/BTC', 'XRP/BTC', 'NEO/BTC',] assert response['result']['whitelist'] == ['ETH/BTC', 'LTC/BTC', 'XRP/BTC', 'NEO/BTC',]
assert response['length'] == 4 assert response['result']['length'] == 4
# Restart with additional filter, reducing the list to 2 # Restart with additional filter, reducing the list to 2
body['pairlists'].append({"method": "OffsetFilter", "number_assets": 2}) body['pairlists'].append({"method": "OffsetFilter", "number_assets": 2})
@ -1687,8 +1687,8 @@ def test_api_pairlists_evaluate(botclient, tmpdir):
rc = client_get(client, f"{BASE_URI}/pairlists/evaluate") rc = client_get(client, f"{BASE_URI}/pairlists/evaluate")
assert_response(rc) assert_response(rc)
response = rc.json() response = rc.json()
assert response['whitelist'] == ['ETH/BTC', 'LTC/BTC', ] assert response['result']['whitelist'] == ['ETH/BTC', 'LTC/BTC', ]
assert response['length'] == 2 assert response['result']['length'] == 2
def test_list_available_pairs(botclient): def test_list_available_pairs(botclient):