为啥我不能在函数中使用 websocket
Posted
技术标签:
【中文标题】为啥我不能在函数中使用 websocket【英文标题】: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 【参考方案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 也许你应该发布你的代码的代表性示例不工作 我自己解决了我的问题,感谢您的所有帮助以上是关于为啥我不能在函数中使用 websocket的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能使用 onClick 在 jQuery $(document).ready 函数中执行函数?
为啥我不能使用 folium.Map() 函数在地图中标记值列表?