2017-02-28 86 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