我使用 jira-python 一段时间了,但到目前为止一直用于查询。现在我需要从 python 脚本创建一个新问题 - 但它对我不起作用。
无论我做什么,我都会收到 E405(方法不允许错误)。但这不是——重复一遍——权限问题。
为了尝试追踪此问题,我使用 curl
手动发送了 POST 命令。没问题,一切正常,问题已创建。
因此,我认为我的代码错误地设置了 create_issue
的参数。我进入 ipython,启用 pdb,并尝试 create_issue()
调用。果然,我在 jira-python 库中遇到了异常。将堆栈从 raise_on_error
向上移动,如下所示:
500 url = self._get_url('issue')
501 r = self._session.post(url, headers={'content-type': 'application/json'}, data=json.dumps(data))
--> 502 raise_on_error(r)
503
504 raw_issue_json = json.loads(r.text)
是否使用 json.dumps(data)
来恢复正在输入和获取的实际字符串:
'{"fields": {"issuetype": {"name": "Bug"}, "summary": "RFU", "project": {"key": "TW"}, "components": [{"name": "A Component"}]}}'
然后我直接将其作为 --data
参数剪切并粘贴到 curl
中。而且效果很好。
这似乎暗示 jira-python
不起作用(用 0.25 和 0.18 尝试过)。
也不是python版本问题(用pythons 2.7、3.3、3.4尝试过)
我的 create_issue()
调用如下所示:
j.create_issue(project={'key':'TW'}, issuetype={'name':'Bug'}, summary='RFU', components=[{'name':'A Component'}])
指定的所有字段值均有效(尽管与此处显示的不同)
我到底做错了什么?此功能不可能在库中被破坏
我正在 virtualenv 中工作,这是 pip freeze 的输出
argparse==1.2.1
ipython==2.1.0
jira==0.25
oauthlib==0.6.3
requests==2.3.0
requests-oauthlib==0.4.1
six==1.7.2
tlslite==0.4.6
wsgiref==0.1.2
这是通过一个简单的pip install ipython jira
命令设置的
顺便说一句,如果我获取现有问题,然后使用合适的参数调用 issue.update()
,它就可以正常工作。
另一项:我正在运行 Ubuntu 14.04
最佳答案
好的,我成功了 - 这是由于内部网络的一些异常情况造成的。
我们的内部 JIRA 服务器的证书已过期。因此他们将其从 https 切换为 http。
我使用 'server':'https://...'
和 'verify':False
创建了 jira 实例来绕过证书错误。 jira-python 大概只是通过 http 连接并使用它来进行所有查询。
但是当需要发布到网站时,我们遇到了 https 与 http 问题。
切换到 'server':'http://...'
并删除 'verify'
选项使其正常工作。
我发现了一个提示here
关于python - E405 尝试使用 jira-python 0.25 创建问题时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24224900/