Почему я не могу использовать websocket в функции

#python #websocket

Вопрос:

Когда я пытаюсь использовать 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")  

но это не работает, почему я не могу использовать websocket в функции, как я могу это сделать

Комментарии:

1. «это не работает» — недостаточно четкое описание вашей проблемы. Пожалуйста, будьте более конкретны.

2. Это буквально ничего не делает, как будто я даже не вызывал функцию, просто ждет @ThierryLathuille

Ответ №1:

Это (незначительное изменение кода OP из-за проблемы с SSL) отлично работает на 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')  

Комментарии:

1. Ваш ответ, вероятно, имел бы большую ценность, если бы вы могли добавить объяснение того, почему это необходимо для запуска кода операции в функции vs на верхнем уровне.

2. В этом нет необходимости . Мой ответ просто демонстрирует, что с версией Python, которую я использую, это работает, в то время как у операции, похоже, возникают проблемы при запуске приложения WebSocket в функции

3. Позвольте мне кое-что исправить, прежде всего, мой вопрос отсутствовал, websocket можно использовать в функции, она работала, и я не понял, что в первую секунду, когда я вставляю таймер в функцию on_message, он работает, когда код websocket отсутствует в функции, но когда я пробую его с помощью кодов websocket в функции, он вообще не работает @DarkKnight

4. @WebSocket Пользователь, возможно, вам следует опубликовать репрезентативный образец вашего кода, который не работает

5. Я исправил свои проблемы, я сам благодарю вас за всю вашу помощь