印尼雅加达综合指数(JCI)是东南亚市场的重要风向标之一。想低成本、高效率地接入实时行情?关键在于云上弹性架构——交易时段按需拉取,非交易时段零成本,这才是真正的物尽其用。

核心思路是阿里云函数计算 + 定时触发器。印尼市场的交易时段是北京时间9:00-15:00,与A股接近,正好可以利用这一规律,只在开市期间触发函数,其他时间自动休眠,成本几乎为零。
函数计算入口
def handler(event, context):
url = f"https://api.jkidata.com/stock/indices?countryId=印尼ID&key={KEY}"
resp = requests.get(url, timeout=10)
data = resp.json()
sa ve_to_rds(data['data'][0])
return {"status": "ok"}
函数配置了弹性并发。交易高峰时段自动扩容,升盘和收盘时实例数自动增加,盘中缩容——这套机制在A股场景下已经打磨成熟,搬到印尼市场同样适用。
弹性配置
reserved_concurrency: 10
max_concurrency: 50
数据存储选用了RDS Serverless。JCI指数每5秒拉取一次,一天约4000条记录,一个月12万条,数据量不大,Serverless模式按需付费,划算得很。
印尼市场的节假日较多,伊斯兰新年、开斋节等都会休市。所以函数代码里调用行情数据API的指数接口,检查isOpen字段,休市日直接返回,避免空跑。
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批完成,效率很高。
def get_all_stocks():
pids = get_all_pids()
for i in range(0, len(pids), 100):
batch = pids[i:i+100]
url = f"https://api.jkidata.com/stock/queryStocks?pids={','.join(batch)}&key={KEY}"
data = requests.get(url).json()
sa ve_batch(data)
整套方案从函数触发器到数据存储,再到节假日判断和成分股分批拉取,都是经过反复验证的。剩下的就是按这个思路部署起来,印尼行情数据便能稳定、低成本地接入你的系统。
