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

如何无需改写为异步将Python多线程爬虫转为WebSocket服务器?

无需改写异步的WebSocket服务器改造方案

当然有办法,你可以使用websocket-server这个轻量级库,它基于线程实现WebSocket服务,完全不需要将你的多线程爬虫改写成异步代码。下面是具体的改造步骤和完整代码:

1. 安装依赖

执行以下命令安装库:

pip install websocket-server

2. 改造后的完整代码

from threading import Thread
import time
import requests
from websocket_server import WebsocketServer

# 全局WebSocket服务器实例
ws_server = None

# WebSocket事件处理函数
def new_client(client, server):
    print(f"新客户端连接: {client['address']}")

def client_left(client, server):
    print(f"客户端断开连接: {client['address']}")

def send_ws_message(data):
    """向所有连接的WebSocket客户端推送消息"""
    if ws_server:
        ws_server.send_message_to_all(data)

class Scraper:
    def __init__(self, url):
        self.url = url

    def _send_request(self):
        try:
            response = requests.get(self.url)
            if response.status_code == 200 and 'good' in response.json():
                # 推送新数据,这里假设推送响应的JSON内容
                send_ws_message(str(response.json()))
                print("发现新数据,已推送")
        except Exception as e:
            print(f"请求出错: {e}")
    
    def scrape(self):
        while True:
            Thread(target=self._send_request).start()
            time.sleep(1)

if __name__ == "__main__":
    # 初始化WebSocket服务器,绑定本地8080端口
    ws_server = WebsocketServer(host='0.0.0.0', port=8080)
    ws_server.set_fn_new_client(new_client)
    ws_server.set_fn_client_left(client_left)
    
    # 启动WebSocket服务器在独立线程
    Thread(target=ws_server.run_forever, daemon=True).start()
    print("WebSocket服务器已启动,监听8080端口")

    # 启动爬虫
    target_url = "https://example.com/your-api-endpoint"  # 替换为你的目标URL
    scraper = Scraper(target_url)
    scraper.scrape()

关键说明

  • WebSocket服务器运行在独立的守护线程中,和你的多线程爬虫并行执行,完全不影响原有爬虫的逻辑。
  • send_ws_message函数可以直接在爬虫的线程中调用,向所有连接的客户端推送新数据。
  • 你可以根据需求自定义WebSocket的事件处理逻辑(比如客户端连接/断开的通知),也可以实现向特定客户端推送消息的功能。

另外,如果你需要更复杂的Web功能,也可以考虑Flask-SocketIO,它同样支持在多线程环境下运行,不过websocket-server更轻量,更适配你的现有场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:25:18