[問題] Dash callback 取用資料疑問

看板Python作者 (不要阿~~)時間9月前 (2024/03/06 13:19), 9月前編輯推噓1(104)
留言5則, 3人參與, 9月前最新討論串1/1
先說我是自學的 目前用 Dash 寫了一個 盤中股票監控的 WEB APP 其中有一個 function def get_realtime_data(): quotes = ... data = pd.concat([self.old, quotes]).sort_index() return data 是將歷史資料與最新的盤中報價合在一起 每1分鐘會跑一次這個 function 這個 function 約需要跑 10 秒(還有其他細項算均線等) 但是如果其他 components 在這十秒鐘需要用到這個 data 時 整個 APP 就需要等待10秒到獲取最新DATA才會繼續 要如何解決? 目前想法是,用另外一個如 realtime.py 檔將這個 function 放在 realtime.py 中 也是每 N 秒跑一次 function 並將 data 存成 pkl 檔 而 Dash 直接 read 這個 pkl 檔不須再做運算 應該是可行,但如此頻繁存取檔案,會不會對硬碟有影響? 這個檔案大概 200mb,也就是每 N 秒就要刪除重建一次這個檔案 另外還有用 SQL 資料庫 但因為我是自學的 SQL完全不懂 不知還有沒有更好的方式避免 dash run 這個 function 時不要當掉? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.169.19 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1709702343.A.17A.html

03/06 13:33, 9月前 , 1F
multiprocess+queue或async
03/06 13:33, 1F

03/06 15:30, 9月前 , 2F
multi-threading?
03/06 15:30, 2F

03/08 21:01, 9月前 , 3F
沒用過dash 但這需求需要的是要有地方儲存吧,sql存
03/08 21:01, 3F

03/08 21:01, 9月前 , 4F
個資料吧
03/08 21:01, 4F
問了chatgpt 後目前用了以下 import threading class WebApp: def __init__(self): self.realtime_process = RealtimeProcess() self.start_background_thread() def start_background_thread(self): thread = threading.Thread(target=self.update_data) thread.daemon = True # 设置为守护线程,确保主程序退出时可以关闭 thread.start() def update_data(self): while True: self.quotes = self.realtime_process.realtime_quotes() self.data = self.realtime_process.realtime_data(self.quotes) self.dgroups_data, self.dgroups_stocks = ( self.realtime_process.realtime_dgroups_data(self.quotes) ) sleep(60) 這樣是可以運行沒錯 但是我在檢查時為何self.realtime_process.realtime_quotes() getting data 2024-03-09 09:19:26.535743 getting dgroups_data 2024-03-09 09:19:26.536059 getting quotes 2024-03-09 09:20:24.959123 getting quotes 2024-03-09 09:20:26.716042 getting data 2024-03-09 09:20:27.876317 getting dgroups_data 2024-03-09 09:20:27.876640 我應該是要每60秒運行一次 但是他卻運行了兩次 因為 self.realtime_quote 是要連接到永豐金API 運行兩次很快就把流量額度用完了 會是什麼問題呢? 已檢查過其他地方沒有用到 update_data ※ 編輯: NoLoveNoMore (59.115.76.99 臺灣), 03/09/2024 09:24:20

03/09 12:58, 9月前 , 5F
寫一個function每60秒跑一次,有這麼複雜w
03/09 12:58, 5F
文章代碼(AID): #1bv_p75w (Python)
文章代碼(AID): #1bv_p75w (Python)