Shapelets平台Python异常检测应用按钮函数绑定报错求助
Shapelets平台异常检测按钮绑定报错排查
问题场景
在Shapelets平台开发Python异常检测应用时,尝试将异常检测函数绑定到按钮触发,但点击按钮时出现Error: Internal Server Error. Runtime error executing computeAndPlotAnomalies错误,现有代码如下:
button = app.button("Execute anomaly-detection") app.place(button) ailtair_chart1 = app.altair_chart(title='MLII', data=df['MLII']) app.place(line_chart1) ailtair.bind(computeAndPlotAnomalies, df['MLII'], windowSize, top_k, triggers=[button]) app.register()
可能的报错原因及排查方向
1. 变量名拼写错误
代码中创建的图表变量是ailtair_chart1,但调用app.place()时传入的是未定义的line_chart1,这会直接引发运行时错误,先修正为:
app.place(ailtair_chart1)
2. 绑定函数的API调用错误
Shapelets中绑定函数到触发器的正确API是app.bind(),而非ailtair.bind(),错误的API调用会导致无法正确触发函数,修改为:
app.bind(computeAndPlotAnomalies, df['MLII'], windowSize, top_k, triggers=[button])
3. computeAndPlotAnomalies函数参数不匹配
检查computeAndPlotAnomalies的定义,确保它接受你传递的3个参数(df['MLII']、windowSize、top_k),参数数量、顺序、类型必须完全一致。比如函数定义是否为def computeAndPlotAnomalies(data, window, k):,若参数数量不符、类型不匹配(如windowSize是字符串而非整数),会直接引发函数执行错误。
4. 函数内部未处理的异常
computeAndPlotAnomalies函数内部可能存在逻辑错误:
- 检查
df['MLII']的数据格式是否符合函数要求,比如是否是Shapelets支持的数据集类型,而非普通Pandas Series - 检查
windowSize和top_k是否为有效数值(如windowSize不能小于1,top_k不能大于数据量) - 函数中若涉及更新图表,要确保用Shapelets的API修改
ailtair_chart1,比如用ailtair_chart1.data(new_data)更新数据,而非重新创建图表
5. 权限或资源问题
如果函数涉及读取外部数据或占用较多计算资源,可能触发Shapelets平台的内部限制。可以先测试空的computeAndPlotAnomalies函数(比如仅打印日志),确认绑定和触发逻辑正常后,再逐步添加异常检测代码。
内容的提问来源于stack exchange,提问作者Chen Sofia
相关产品推荐
相关产品推荐

