Gut, der Code erklärt dein Verhalten vollständig. Zwei harte Punkte:

1) **Du schreibst START in run.log, aber ohne Flush.**  
   Wenn der Prozess im ersten `requests.post(...)` hängt, bleibt der `log`-Buffer u. U. im Speicher, bis der Context Manager schließt. Deshalb siehst du „nichts“, obwohl geschrieben wurde.

2) **`requests.post(..., timeout=420)` ist ein Single-Time...