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

如何关闭Python中polygon-api-client的残留API连接?

解决polygon-api-client连接无法关闭导致终端阻塞的问题

出现QSocketNotifier: Can only be used with threads started with QThread错误且终端无法恢复,本质是polygon客户端(尤其是WebSocket组件)未正确释放后台连接/线程,连带httpx连接池或wsdump的Qt相关资源残留,导致进程无法正常退出。以下是针对性解决方案:

1. 显式管控客户端生命周期

REST客户端:优先用上下文管理器

polygon的RESTClient支持上下文管理器,会自动在代码块结束后关闭连接、清理资源,避免手动遗漏:

from polygon import RESTClient

# 用with块自动管理客户端
with RESTClient(api_key="YOUR_API_KEY") as client:
    # 执行你的查询逻辑
    agg_data = client.get_aggs("AAPL", 1, "day", "2024-01-01", "2024-01-02")
    print(agg_data)
# 退出with块后,客户端自动关闭,连接池被清理

WebSocket客户端:强制调用关闭方法

WebSocket客户端会启动后台线程监听推送,必须主动调用close()或stop()方法终止线程:

from polygon import WebSocketClient

client = WebSocketClient(api_key="YOUR_API_KEY", subscriptions=["T.AAPL"])

try:
    # 启动监听(如果是同步运行)
    client.run()
finally:
    # 无论是否异常,都确保关闭客户端
    client.close()

2. 清理httpx连接池

polygon-api-client依赖httpx处理HTTP请求,若手动传入了httpx.Client实例,需显式关闭以释放连接池:

import httpx
from polygon import RESTClient

httpx_client = httpx.Client()
polygon_client = RESTClient(api_key="YOUR_API_KEY", http_client=httpx_client)

try:
    # 执行查询
    data = polygon_client.get_ticker_details("AAPL")
finally:
    # 先关闭polygon客户端,再关闭httpx客户端
    polygon_client.close()
    httpx_client.close()

3. 解决QSocketNotifier线程错误

该错误由wsdump的Qt组件引发(polygon WebSocket客户端依赖它),需在程序结束前清理Qt资源:

from PyQt5.QtCore import QCoreApplication
import sys

# 在程序所有逻辑执行完毕后添加
if QCoreApplication.instance():
    QCoreApplication.instance().quit()
sys.exit()

4. 极端情况:强制捕获退出信号

如果上述方法仍无法解决,可通过信号处理函数在程序终止前强制清理资源:

import signal
import sys
from polygon import RESTClient

client = None

def cleanup(signum, frame):
    global client
    if client:
        client.close()
    sys.exit(0)

# 注册中断信号处理(Ctrl+C)
signal.signal(signal.SIGINT, cleanup)
signal.signal(signal.SIGTERM, cleanup)

# 主程序逻辑
client = RESTClient(api_key="YOUR_API_KEY")
data = client.get_aggs("AAPL", 1, "day", "2024-01-01", "2024-01-02")
print(data)

内容的提问来源于stack exchange,提问作者Beetle Ds Family Gaming Channe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:50:00