2017-02-28 83 views
0

我使用jira Python library從jira服務器獲取問題。爲了減少服務器負載和網絡流量,我想以序列化的形式在本地存儲search_issues()結果。如果大部分問題都可以在本地獲得,我只需要查詢最近更新的這些問題。如何在Python中序列化jira問題對象?

不幸的是,我遇到了一個問題,似乎jira問題是不可挑選的。呼籲的問題轉儲()的時候,我總是得到以下錯誤:

_pickle.PicklingError: Can't pickle <class 'jira.resources.PropertyHolder'>: attribute lookup PropertyHolder on jira.resources failed 

我也嘗試過其他Python序列化方式(如元帥,蒔蘿,JSON),但所有這些序列化失敗(這不是太令人驚訝了,因爲蒔蘿和json似乎依賴醃菜)。

任何想法如何jira問題可以在Python中序列化?

+0

以我的理解,這並不像人們想象的那樣簡單。你是否需要問題所包含的所有信息在本地可用? –

+0

我需要相當多的問題信息。我簡單地計算了使用的屬性的數量,至少使用了二十個問題字段。有時我甚至需要更新日誌/歷史記錄。我已經考慮過將所有相關信息提取到精簡的問題對象,但這當然比依靠標準Python機制更費力;-) –

+0

問題是,每個'jira.resources.Resource'(註釋,附件,版本......)需要與服務器分開提取並轉換爲字典,甚至更多的資源可能包含其他的「資源」等。我做了類似的事情,但花了大約400行代碼,並且那只是爲了將票從一個傑拉克隆到另一個傑拉。讓本地信息更加棘手。 –

回答

0

我知道它的工作。

Changes needed to jira/resources.py 

    Replace: 
    top = type(str('PropertyHolder'), (object,), raw) 
    with 
    top = PropertyHolder(raw) 

    and add at the end 

    class PropertyHolder(object): 

     def __init__(self, raw): 
     __bases__ = raw