ogre0403 / ipgod

0 stars 3 forks source link

歷史資料處理機制 #22

Open ogre0403 opened 7 years ago

ogre0403 commented 7 years ago

資料庫有三個table,dataset、resource_metadata、ckan_download。

Step1. 由 http://data.gov.tw/api/v1/rest/dataset/ 取出所有25000筆data set id 存在dataset 表裡

Step2. Fetcher 查dataset表裡每一個row代表的dataset id有幾筆resourceID存在resource_metadata表。

Step3. Downloader 取出 resource_metadata 裡 processed =false的一筆資料後,將processed改為true後,開始下載。

Step 4-a. 下載成功時, 寫入到ckan_download,並刪除resource_metadata裡的row

Step 4-b. 下載失敗時, 只寫入失敗息到ckan_download即可

ogre0403 commented 7 years ago

issue 1: Step 1的工作,應該只執行一次。透過判斷table裡有無東西來判斷要不要執行

issue 2: Step 3 裡,因為讀取processed = false的資料和改成true的棟作,並不是atomic, 所以Downloader間取出processed=false的資料時,會發生race condition。 是否可將resource_metadata 表裡的row倒回share_q,由python 所提供的queue來保證thread-safe