我想制作一个python脚本来自动执行与JIRA类似的票证响应。为此,我正在使用json和请求库。由于有时HTTP请求可能非常不可靠,因此我想让脚本在HTTP请求失败时重试HTTP请求。到目前为止,我有这个:
def openNewTicket(queueID, subject, content):
post_url = "{}/ticket/".format(default_url)
#Filling body OBJ
myObj = { "ContentType": "text/plain",
"Subject" : subject,
"Content": content,
"Queue": queueID,
"CustomFields": { "33": "alarm", "26": "yes", "24": "technical incident" }
}
#Formatting obj to json
jsonBody = json.dumps(myObj)
print jsonBody
try:
response = requests.post(post_url, data=jsonBody, headers=authorization_header))
date = datetime.datetime.now()
writeLog("{} - Created ticket {}\n".format(date, response['id']))
rocketChat.sendChatMessage("modem", "Sucessfully created ticket {}".format(response['id']))
return 0
except Exception:
time.sleep(1)
return openNewTicket(queueID, subject, content)
问题是:由于某种原因,当我得到201状态代码(已创建)时,它被视为异常并再次进行迭代。有什么办法可以告诉python 201状态代码不是异常吗?
[Requests
确实not在201状态代码上引发错误(甚至不在404上),这是一个示例。
import requests
response = requests.post(
'https://reqres.in/api/users',
data={'name': 'test', 'salary': '123', 'age': '23'}
)
print(response.status_code)
# 201
但是似乎您的范围太宽泛的例外条款(except Exception
)就是这里的问题,它捕获了所有内容,因此您在这里不知道造成此例外的原因是什么。您应该抓住ConnectionError
之类的真正惊喜。
很确定这里的问题是带有)
的行,不应存在。:requests.post(post_url, data=jsonBody, headers=authorization_header))