【问题标题】:Why can't I use websocket in a function为什么我不能在函数中使用 websocket
【发布时间】:2021-11-26 08:26:46
【问题描述】:

当我尝试像这样使用 websocket 时

ws = websocket.WebSocketApp(f"wss://fstream.binance.com/ws/{symbol}@aggTrade",on_message=on_message,on_close=on_close)
ws.run_forever()

它工作正常,但出于某种原因我想像这样使用它

def func(symbol):
    ws = websocket.WebSocketApp(f"wss://fstream.binance.com/ws/{symbol}@aggTrade",on_message=on_message,on_close=on_close)
    ws.run_forever()
func("btcusdt")

但它不起作用为什么我不能在 func 中使用 websocket 我该怎么做

【问题讨论】:

  • “它不起作用”对您的问题的描述不够清楚。请更具体。
  • 它实际上什么都不做,就像我什至没有调用函数只是等待@ThierryLathuille

标签: python websocket


【解决方案1】:

这(由于 SSL 问题对 OP 的代码进行了微小的更改)在 Python 3.9.9 上完美运行

import websocket
import ssl


def on_msg(_, msg):
    print(msg)


def on_err(_, err):
    print(err)


def func(symbol):
    ws = websocket.WebSocketApp(
        f"wss://fstream.binance.com/ws/{symbol}@aggTrade", on_message=on_msg, on_error=on_err)
    ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})


if __name__ == '__main__':
    func('btcusdt')

【讨论】:

  • 如果您可以添加解释为什么在函数中运行 OP 的代码而不是在顶层运行 OP 的代码,您的答案可能会更有价值。
  • 这不是必要的。我的回答仅仅证明了我使用的 Python 版本确实有效,而在函数中运行 WebSocketApp 时 OP 似乎有问题
  • 首先让我纠正一些问题,我的问题是缺少 websocket 可以在它正在工作的函数中使用,我不明白第一件事是当我在 on_message func 中放置一个计时器时当 websocket 代码不在函数中时它可以工作,但是当我尝试使用 websocket 代码在函数中时它根本不工作@DarkKnight
  • @WebsocketUser 也许你应该发布你的代码的代表性示例工作
  • 我自己解决了我的问题,感谢您的所有帮助
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
相关资源
最近更新 更多