• Stefy Lanza (nextime / spora )'s avatar
    cut RunPod GraphQL traffic: reads go to REST, boots poll REST + TCP (v0.4.56) · 71ec814e
    Stefy Lanza (nextime / spora ) authored
    Observed through the 3.3 h ban: REST reads kept working, but every REST write
    (create, and a body-less DELETE) failed with 500 "unexpected end of JSON
    input". REST writes appear to go through RunPod's GraphQL backend and share
    its rate limit, so REST cannot rent around a ban. The fix is not to earn one.
    
    - wait_ready polled GraphQL get_pod every 5 s per booting pod, which is
      hundreds of calls a minute in a 64-pod scale-up. Direct-TCP pods (the
      default) now poll REST and open a TCP connect to the mapped port. RunPod
      refuses that connect until the server inside listens, which is a stronger
      signal than GraphQL listing the port at container start. GraphQL stays the
      fallback outside a ban.
    - list_pods (the reaper and the survivor sweep, every minute) is REST-first,
      with includeMachine=true. Card name and VRAM come from the catalogue.
    - GraphQL calls are counted by operation and the rate is logged every 10 min,
      so the volume is visible before RunPod bans the key.
    - A REST write that fails this way during a ban says why.
    Co-Authored-By: 's avatarClaude Opus 5.5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01KnfkxBpcZ1v6ypRFFyhrVM
    71ec814e
test_burst_placement.py 61.7 KB