根据POST请求的响应重新启动Python脚本的条件语句
我有一个python脚本,在这个脚本中,我向服务器发送一个POST数据请求。我期待一个特定的响应,它表明响应中有数据。如果没有收到此响应,如何重新启动脚本/转到脚本的开头。脚本被包装在一个函数中,该函数允许它每分钟运行一次 如果我的回答不符合预期,我想回到函数的开头 脚本:根据POST请求的响应重新启动Python脚本的条件语句,python,python-requests,Python,Python Requests,我有一个python脚本,在这个脚本中,我向服务器发送一个POST数据请求。我期待一个特定的响应,它表明响应中有数据。如果没有收到此响应,如何重新启动脚本/转到脚本的开头。脚本被包装在一个函数中,该函数允许它每分钟运行一次 如果我的回答不符合预期,我想回到函数的开头 脚本: import sched, time, requests, jsonpickle, arcpy, requests, json, datetime s = sched.scheduler(time.time, time.sl
import sched, time, requests, jsonpickle, arcpy, requests, json, datetime
s = sched.scheduler(time.time, time.sleep)
def do_something(sc):
data2 = jsonpickle.decode((f2.read()))
Start = datetime.datetime.now()
# Start = datetime.datetime.strftime(data2['QueryRequest']['LastUpdatedDate'])
DD = datetime.timedelta(minutes=5)
earlier = Start - DD
earlier_str = earlier.strftime('X%m/%d/%Y %H:%M:%S').replace('X0','X').replace('X','')
data2["QueryRequest"]['LastUpdatedDate'] = str(earlier_str)
data2 = jsonpickle.encode(data2)
BulkyItemInfo = " "
spatial_ref = arcpy.SpatialReference(4326)
lastpage = 'false'
startrow = 0
newquery = 'new'
pagesize = 100
url2 = "URL"
headers2 = {'Content-type': 'text/plain', 'Accept': '/'}
while lastpage == 'false':
r2 = requests.post(url2, data=data2, headers=headers2)
print r2.text
decoded2 = json.loads(r2.text)
f2 =open('C:\Users\GeoffreyWest\Desktop\Request.json')
data2 = jsonpickle.decode((f2.read()))
if decoded2['Response']['LastPage'] == 'false':
data2['QueryRequest']['PageSize'] = pagesize
startrow = startrow + data2['QueryRequest']['PageSize']
data2['QueryRequest']['StartRowNum'] = startrow
data2['QueryRequest']['NewQuery'] = 'false'
data2 = jsonpickle.encode(data2)
print startrow
else:
lastpage = 'true'
print json.dumps(decoded2, sort_keys=True, indent=4)
items = []
for sr in decoded2['Response']['ListOfServiceRequest']['ServiceRequest']:#Where response is successful or fails
成功响应的输出:
{
"status": {
"code": 311,
"message": "Service Request Successfully Queried.",
"cause": ""
},
"Response": {
"LastPage": "false",
"NumOutputObjects": "100",
"ListOfServiceRequest": {
"ServiceRequest": [
{
{"status":{"code":311,"message":"Service Request Successfully Queried.","cause":""},"Response":{"LastPage":"true","NumOutputObjects":"0","ListOfServiceRequest":{}}}
不成功响应的输出:
{
"status": {
"code": 311,
"message": "Service Request Successfully Queried.",
"cause": ""
},
"Response": {
"LastPage": "false",
"NumOutputObjects": "100",
"ListOfServiceRequest": {
"ServiceRequest": [
{
{"status":{"code":311,"message":"Service Request Successfully Queried.","cause":""},"Response":{"LastPage":"true","NumOutputObjects":"0","ListOfServiceRequest":{}}}
如果不成功,请再次调用该函数。为什么在响应成功之前不使用while循环?只需调用循环中的函数是的,如果它返回一个不成功的输出,我将只调用循环中的函数。我通常不会编写/处理很多函数,所以谢谢@Brobin和Sergius