印尼雅加达综合指数是东南亚最重要的股指之一。接入印尼行情数据API后,我用阿里云的弹性架构实现了按需拉取,交易时段实时推送,非交易时段零成本。
正文
弹性架构的核心是阿里云函数计算+定时触发器。印尼市场的交易时段是北京时间9:00-15:00,与A股接近。
python
函数计算入口
def handler(event, context):
url = f"http://api.jkidata.com/stock/indices?countryId=印尼ID&key={KEY}"
resp = requests.get(url, timeout=10)
data = resp.json()
save_to_rds(data['data'][0])
return {"status": "ok"}
【数据API】jkidata.com | 文档中心 docs.jkidata.com
函数配置了弹性并发。交易高峰时段可以自动扩容,开盘和收盘时函数实例数自动增加,盘中缩容。
yaml
弹性配置
reserved_concurrency: 10
max_concurrency: 50
数据存储用了RDS Serverless。JCI指数每5秒拉取一次,一天约4000条记录,一个月12万条,数据量不大,Serverless模式很划算。
印尼市场的节假日较多,伊斯兰新年、开斋节等都会休市。函数代码里调用行情数据API的指数接口检查isOpen字段,休市日直接返回。
python
status = requests.get(f"{BASE_URL}/stock/indices?countryId=印尼ID&key={KEY}").json()
if not status['data'][0].get('isOpen', False):
return {"status": "market closed"}
JCI指数的成分股约600只,监控全部成分股需要批量查询。我用pids参数分批拉取,每批100只,6批完成。
python
def get_all_stocks():
pids = get_all_pids()
for i in range(0, len(pids), 100):
batch = pids[i:i+100]
url = f"http://api.jkidata.com/stock/queryStocks?pids={','.join(batch)}&key={KEY}"
data = requests.get(url).json()
save_batch(data)
docs.jkidata.com上有阿里云函数计算的部署模板,包含印尼市场的完整配置。
【数据API】jkidata.com | 文档中心 docs.jkidata.com