Commit c903b6cd authored by 杨明橙's avatar 杨明橙

优化代码

parent 50e36891
......@@ -33,7 +33,6 @@ async def calculate_nav(fund_id, calc_time=None):
# redis 查询最新数据
redis_client = get_cmc_price_redis(app.state.redis_manager)
price_data = await get_price(list(amount), None, redis_client)
price_data.update({'USD': 1})
lost_data = list(set(amount) - set(price_data))
# todo 未完成具体实现
if lost_data:
......
......@@ -221,10 +221,14 @@ class CMCPrice:
async def get_price(coin_list, query_time, db_client):
coin_list_copy = coin_list.copy()
if 'USD' in coin_list_copy: coin_list_copy.remove('USD')
result_dict = {}
if 'USD' in coin_list_copy:
coin_list_copy.remove('USD')
result_dict.update({'USD': 1})
if not query_time:
temp_index = []
result_dict = {}
async with db_client.pipeline(transaction=True) as pipe:
for coin_item in coin_list_copy:
pipe.hget(f'CMC:CoinPrice:{coin_item}', 'Price')
......@@ -234,16 +238,17 @@ async def get_price(coin_list, query_time, db_client):
result_dict[coin_name] = float(result_item)
else:
cursor = db_client.find({'time': query_time, "symbol": {"$in": coin_list_copy}})
result_dict = {}
temp_res = await cursor.to_list(length=None)
for item in temp_res:
result_dict[item['symbol']] = item['open']
return result_dict
# 测试CMCPrice类
if __name__ == '__main__':
mongodb_manager = AioMongodbManager()
mongodb_manager.setup_pool(settings.py_fund_mongodb_uri, 'pyfund')
# asyncio.run(CMCPrice(mongodb_manager).save_history_data('BTC'))
# asyncio.run(CMCPrice(mongodb_manager).check_data('BTC'))
asyncio.run(CMCPrice(mongodb_manager).update_latest_data())
cmc_price = CMCPrice(mongodb_manager)
# asyncio.run(cmc_price.update_latest_data())
# asyncio.run(cmc_price.save_history_data('BTC'))
asyncio.run(cmc_price.check_data('BTC'))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment