# HG changeset patch # User Mike Pavone # Date 1376220902 25200 # Node ID 8409af16d6e5cc18532ce1f7dba3b2358d4569a4 # Parent 855c05c9cae124a9a0176b8b35f09ce89587ca57 Sleep for 20 seconds when we receive a 429 response diff -r 855c05c9cae1 -r 8409af16d6e5 src/requests.tp --- a/src/requests.tp Sun Aug 11 04:03:51 2013 -0700 +++ b/src/requests.tp Sun Aug 11 04:35:02 2013 -0700 @@ -109,6 +109,7 @@ _message <- decoded get: "message" withDefault: "" #{ status <- { "error" } + httpCode <- { _code } message <- { _message } string <- { "Error: " . _message @@ -119,8 +120,17 @@ } } } else: { - #{print <- print: "HTTP response gave error! code was: " . _code . "\n"} - + #{ + status <- { "error" } + httpCode <- { _code } + message <- { "HTTP response gave error! code was: " . _code . "\n" } + string <- { + "Error: " . message + } + print <- { + print: string . "\n" + } + } } } @@ -164,6 +174,7 @@ _message <- decoded get: "message" withDefault: "" #{ status <- { "error" } + httpCode <- { _code } message <- { _message } string <- { "Error: " . _message @@ -174,7 +185,17 @@ } }} // end if } else: { - #{print <- print: "HTTP response gave error! code was: " . _code . "\n"} + #{ + status <- { "error" } + httpCode <- { _code } + message <- { "HTTP response gave error! code was: " . _code . "\n" } + string <- { + "Error: " . message + } + print <- { + print: string . "\n" + } + } } } diff -r 855c05c9cae1 -r 8409af16d6e5 src/solver.tp --- a/src/solver.tp Sun Aug 11 04:03:51 2013 -0700 +++ b/src/solver.tp Sun Aug 11 04:35:02 2013 -0700 @@ -138,11 +138,26 @@ } solve:withAuth:andInfo:andProg <- :progId :authKey :info :prog { - start <- os time - resp <- (requests evalId: progId (info allInputs)) sendWithKey: authKey - end <- os time - if: (end - start) < 4 { - os sleep: (4 - (end - start)) + statusCode <- 429 + resp <- false + start <- 0 + end <- 0 + while: { statusCode = 429} do: { + start <- os time + resp <- (requests evalId: progId (info allInputs)) sendWithKey: authKey + end <- os time + if: (resp status) = "ok" { + statusCode <- 200 + if: (end - start) < 4 { + os sleep: (4 - (end - start)) + } + } else: { + statusCode <- resp httpCode + if: statusCode = 429 { + print: "API is pissed, waiting 20 seconds...\n" + os sleep: 20 + } + } } if: (resp status) = "ok" { print: "Start: " . (string: start) . ", End: " . (string: start) . "Duration: " . (string: end - start) . "\n" @@ -180,8 +195,13 @@ print: "None of our programs actually matched 0x" . (hex: failOutput) ." with input 0x" . (hex: failInput) ." :(\n" } } else: { - print: "Got message: " . (gresp message) . ", moving on\n" - cur <- cur + 1 + if: (gresp httpCode) = 429 { + print: "API is pissed, waiting 20 seconds...\n" + os sleep: 20 + } else: { + print: "Got message: " . (gresp message) . ", moving on\n" + cur <- cur + 1 + } } } }