Python 使用用户输入关闭StreamConn

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

我一直在玩羊驼市场的API 我正在尝试流数据,但也让用户关闭与输入的连接,但我不完全确定如何进行。我已经包括了一个尝试退出与键盘中断似乎不工作。正在找人给我指出正确的方向

编辑:我已经尝试过使用线程来实现这一点,但是我不确定这是否是正确的方法,因为endstream()似乎没有运行

代码是什么样子的

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处理程序。请看:我会在几个小时后回家看看,它看起来可以工作,但这个函数会被另一个函数调用。这将结束整个计划,不是吗?