feat: add quote sync command
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""Refresh listed-fund quotes through the dual-source health pipeline."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import asyncio
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
sys.path.insert(0, str(ROOT))
|
||||
|
||||
from app.service.market_quote_sync_service import MarketQuoteSyncService # noqa: E402
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="Sync listed Southern Fund market quotes")
|
||||
parser.add_argument(
|
||||
"--product-code", action="append", dest="product_codes",
|
||||
help="Limit sync to a product code; can be repeated",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
async def run(args: argparse.Namespace) -> None:
|
||||
codes = tuple(args.product_codes) if args.product_codes else None
|
||||
result = await MarketQuoteSyncService().sync(product_codes=codes)
|
||||
print(
|
||||
f"sync_run_no={result['sync_run_no']} requested={result['requested_count']} "
|
||||
f"quotes={result['quote_count']} degraded={result['degraded']}"
|
||||
)
|
||||
for source in result["sources"]:
|
||||
print(
|
||||
f"source={source['source']} status={source['status']} "
|
||||
f"quotes={source['quote_count']} error={source['error_type']}"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(run(parse_args()))
|
||||
Reference in New Issue
Block a user