You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下nohup运行IG Markets流式API Python脚本失败问题排查

问题排查与解决方案

一、脚本本身的致命错误(直接导致nohup运行失败)

  • 依赖库未导入:代码中使用pd.read_csv、pd.DataFrame等pandas操作,但未添加import pandas as pd语句,运行时会抛出NameError: name 'pd' is not defined异常,直接终止程序。
  • 语法错误:
    • on_prices_update函数内的print("xxxxxxxx 缺少闭合引号和右括号,语法不合法。
    • on_charts_update函数内的print(xxxxxx"\ 存在引号不匹配、缺少左括号的语法错误,脚本无法正常解析执行。
  • 交互式阻塞语句:脚本末尾的input("{0:-^80}\n".format(...))是交互式命令,nohup运行时进程脱离终端,stdin被关闭,执行到此处会抛出EOFError,导致进程直接退出。
  • 回调线程被阻塞:on_charts_update中的time.sleep(60)会阻塞Lightstreamer的事件监听线程,无法及时处理后续广播信号,甚至触发服务器超时断开连接,进程可能因此终止。

二、nohup运行的优化建议

即使修复脚本错误,也要确保nohup的正确使用:

  • 显式重定向输出:避免因默认输出文件权限或IO问题导致进程异常,建议运行时指定日志文件:
    nohup python marketdata.py > marketdata.log 2>&1 &
    
    其中2>&1将错误输出合并到标准输出,统一写入日志,方便后续排查问题。
  • 进程状态管理:用&将进程放入后台后,可通过ps aux | grep marketdata.py查看进程状态,用kill <进程PID>终止进程。

三、脚本修复要点

  1. 添加pandas导入:在import区域补充
    import pandas as pd
    
  2. 修复所有语法错误:
    • 若不需要on_prices_update函数可直接删除;如需保留,修正print语句:
      def on_prices_update(item_update):
          print("price: %s " % item_update)
      
    • 修正on_charts_update中的字符串格式,确保引号匹配、语法正确,示例:
      def on_charts_update(item_update):
          print("Stock: {stock_name}, UTM: {UTM}, BID_CLOSE: {BID_CLOSE}".format(
              stock_name=item_update["name"], **item_update["values"]
          ))
          res_ = ["{UTM} {stock_name} {BID_CLOSE}".format(
              stock_name=item_update["name"], **item_update["values"]
          ).split(' ')]
      
  3. 替换交互式输入:移除input(...)语句,改用无限循环保持主线程运行(Lightstreamer监听为异步,需主线程不退出):
    # 替换原input语句
    try:
        while True:
            time.sleep(3600)  # 每小时空循环一次,避免主线程退出
    except KeyboardInterrupt:
        ig_stream_service.disconnect()
    
  4. 移除回调中的sleep:删除on_charts_update内的time.sleep(60),避免阻塞监听线程,如需控制数据写入间隔,可在主线程通过定时器实现。

内容的提问来源于stack exchange,提问作者Kiann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:25:30