根据POST请求的响应重新启动Python脚本的条件语句

根据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

我有一个python脚本,在这个脚本中,我向服务器发送一个POST数据请求。我期待一个特定的响应,它表明响应中有数据。如果没有收到此响应,如何重新启动脚本/转到脚本的开头。脚本被包装在一个函数中,该函数允许它每分钟运行一次

如果我的回答不符合预期,我想回到函数的开头

脚本:

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