Python 使用用户输入关闭StreamConn
我一直在玩羊驼市场的API 我正在尝试流数据,但也让用户关闭与输入的连接,但我不完全确定如何进行。我已经包括了一个尝试退出与键盘中断似乎不工作。正在找人给我指出正确的方向 编辑:我已经尝试过使用线程来实现这一点,但是我不确定这是否是正确的方法,因为endstream()似乎没有运行 代码是什么样子的Python 使用用户输入关闭StreamConn,python,websocket,python-asyncio,Python,Websocket,Python Asyncio,我一直在玩羊驼市场的API 我正在尝试流数据,但也让用户关闭与输入的连接,但我不完全确定如何进行。我已经包括了一个尝试退出与键盘中断似乎不工作。正在找人给我指出正确的方向 编辑:我已经尝试过使用线程来实现这一点,但是我不确定这是否是正确的方法,因为endstream()似乎没有运行 代码是什么样子的 import alpaca_trade_api as tradeapi import threading conn = tradeapi.StreamConn(xxx,xxx,xxx) def
import alpaca_trade_api as tradeapi
import threading
conn = tradeapi.StreamConn(xxx,xxx,xxx)
def streamorders(conn):
t1 = threading.Thread(target = startstream(conn))
t2 = threading.Thread(target = endstream(conn))
t1.start()
t2.start()
t1.join()
t2.join()
return
def startstream(conn):
@conn.on(r'trade_updates')
async def on_msg(conn, data, symbols):
print('Order completed')
conn.run(['trade_updates'])
def endstream(conn):
time.sleep(0.2)
userAction = int(input('Press 0 to stop streaming: '))
if userAction == 0:
conn.close()
return
streamorders(conn)
理想情况下,我希望它表现得像这样
order completed
order completed
order completed
Press 0 to exit:
我注意到可能与此类似,我目前正试图让它与我的代码一起工作。看起来我对线程的处理方式完全错误。输入必须来自标准输入吗?如果只使用输入来关闭连接并结束程序,那么可以添加一个SIGINT处理程序。请看:我会在几个小时后回家看看,它看起来可以工作,但这个函数会被另一个函数调用。这将结束整个计划,不是吗?