2017-02-28 10 views
0

私はjira Python libraryを使って、ジラサーバからの問題を取得しています。サーバ負荷とネットワークトラフィックを減らすために、search_issues()の結果をローカルにシリアライズされた形式で保存したいと思います。ほとんどの問題がローカルで利用できる場合は、最近更新された問題のみをクエリする必要があります。Pythonでjira問題オブジェクトをシリアライズする方法は?

残念ながら私は問題に遭遇しました、それはジラ問題がpicklableではないようです。これではありません(私も(マーシャル、ディル、JSONのような)他のPythonのシリアライズのアプローチを試してみました

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

が、直列化は、それらのすべてのために失敗します。問題のダンプ()を呼び出すとき、私はいつも次のエラーを取得しますディルとジョソンはピクルスに頼っているようだからあまりにも驚くべきことです)。

Pythonでjiraの問題をどのようにシリアライズすることができますか?

+0

これはわかりやすいものではありません。問題がローカルに利用できるようにするために必要なすべての情報が必要ですか? –

+0

私は問題の情報がかなり必要です。私は、使用された属性の数を簡単に数え、少なくとも20ダースの問題フィールドが使用されています。時には、私は問題の変更履歴/履歴が必要な場合もあります。私はすでに、すべての関連する情報を切り捨てられた問題オブジェクトに抽出することを考えましたが、それは標準的なPythonのメカニズムに頼るよりももちろん努力しています;-) –

+0

問題は、すべての 'jira.resources.Resource'(コメント、添付ファイル、バージョンなど)をサーバーとは別にフェッチして辞書などに変換する必要があります。リソースには他の 'リソース 'などが含まれている可能性があります。私は一度似たようなことをしましたが、それはちょうど1つのジラから別のジラへチケットをクローンするためのものでした。ローカルで利用可能な情報を持つことはさらに手間がかかります。 –

答えて

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 
関連する問題