請問 程式加上 Event.wait() 該怎麼讓程式停止呢

有任何提問的都來這
回覆文章
lumpa7223
文章: 3
註冊時間: 2023-05-08, 18:57

請問 程式加上 Event.wait() 該怎麼讓程式停止呢

文章 lumpa7223 »

用訊號攔截,或是 try 也不行
爬了文件, 需要用 event.set()
有什麼好方法能夠ctrl+c 讓程式中斷呢, 謝謝!

代碼: 選擇全部

import shioaji as sj
import signal
import sys
from shioaji import TickSTKv1, Exchange
from threading import Event


def signal_handler(signum, frame):
    print(f'Signal_handler: caught signal {signum}')
    if signum == signal.SIGINT.value:
        print('SIGINT')
        api.logout()
        sys.exit(1)


signal.signal(signal.SIGINT, signal_handler)

try:
    api = sj.Shioaji()

    api.login(
        api_key='key',
        secret_key='pass',
        contracts_cb=lambda security_type: print(
            f"{repr(security_type)} fetch done."),
        subscribe_trade=True
    )

    api.quote.subscribe(
        api.Contracts.Stocks["1609"],
        quote_type=sj.constant.QuoteType.Tick,
        version=sj.constant.QuoteVersion.v1
    )

    @api.on_tick_stk_v1()
    def quote_callback(exchange: Exchange, tick: TickSTKv1):
        print(f'Exchange: {exchange}, Tick: {tick}')

    Event().wait()
except KeyboardInterrupt:
    print('Logout success!')
finally:
    api.logout()
回覆文章