redis - 如何給輕量python程序、腳本制作緩存?
問(wèn)題描述
運(yùn)維菜鳥(niǎo),最近在做公司日志進(jìn)行簡(jiǎn)單處理之后,按一定數(shù)量加入一個(gè)list,然后使用ES的接口將數(shù)據(jù)批量添加到另外一臺(tái)ElasticSearch上,再通過(guò)一些方式進(jìn)行展示。這里遇到一個(gè)問(wèn)題,如果數(shù)據(jù)插入時(shí),發(fā)生異常。比如要插入的es主機(jī)崩潰等,但是數(shù)據(jù)源沒(méi)有問(wèn)題。這樣就應(yīng)該把已經(jīng)處理完的數(shù)據(jù)移到緩存中,然后停止程序。(數(shù)據(jù)源是kafka,即便停止了程序,重新啟動(dòng)后仍可以消費(fèi)之前沒(méi)有消費(fèi)的)那么想問(wèn)一下,對(duì)于比較輕量的python程序或者腳本,應(yīng)該使用怎樣的方式存儲(chǔ)這些異常狀況發(fā)生時(shí)要先存儲(chǔ)下來(lái)的數(shù)據(jù)呢?
問(wèn)題解答
回答1:可以在es異常時(shí), py腳本捕獲到異常后, 使用cPickle或者pickle 將處理好的數(shù)據(jù)序列化后保存到一個(gè)文件上(你可以理解成寫入一個(gè)文件, 不同在于cPickle和pickle能夠?qū)⒆值浠蛘吡斜磉@樣的對(duì)象直接寫入文件), 然后等你es恢復(fù)了, 重新啟動(dòng)該py腳本, 那么該腳本優(yōu)先去檢測(cè)是否存在這個(gè)臨時(shí)文件, 如果有, 并非空, 則把里面的數(shù)據(jù)取出, 寫入es
相關(guān)文章:
1. debian - docker依賴的aufs-tools源碼哪里可以找到啊?2. macos - mac下docker如何設(shè)置代理3. docker - 如何修改運(yùn)行中容器的配置4. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問(wèn)題。5. docker api 開(kāi)發(fā)的端口怎么獲取?6. docker gitlab 如何git clone?7. javascript - 連續(xù)點(diǎn)擊觸發(fā)mouseleave事件8. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????9. docker start -a dockername 老是卡住,什么情況?10. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問(wèn)題 麻煩幫我看一下

網(wǎng)公網(wǎng)安備