When the the tokens expire or invalidated for any reason, an exception should be raised instead of this endless loop:
[2016-02-04 06:01:18,875: INFO/Worker-10] Sleeping for 5.5 seconds, 2016-02-04 06:01:18 [2016-02-04 06:01:23,762: WARNING/Worker-6] API error badtoken: Invalid token [2016-02-04 06:01:23,763: VERBOSE/Worker-6] Bad token error for Yann. Tokens for "csrf" used in request; invalidated them. [2016-02-04 06:01:23,828: INFO/Worker-6] Sleeping for 9.7 seconds, 2016-02-04 06:01:23 [2016-02-04 06:01:25,667: WARNING/Worker-15] API error badtoken: Invalid token [2016-02-04 06:01:25,668: VERBOSE/Worker-15] Bad token error for Yann. Tokens for "csrf" used in request; invalidated them. [2016-02-04 06:01:25,725: VERBOSE/Worker-15] Sleeping for 2.5 seconds, 2016-02-04 06:01:25 [2016-02-04 06:01:28,709: WARNING/Worker-10] API error badtoken: Invalid token [2016-02-04 06:01:28,709: VERBOSE/Worker-10] Bad token error for Yann. Tokens for "csrf" used in request; invalidated them. [2016-02-04 06:01:28,784: INFO/Worker-10] Sleeping for 5.6 seconds, 2016-02-04 06:01:28 [2016-02-04 06:01:30,087: WARNING/Worker-2] API error badtoken: Invalid token [2016-02-04 06:01:30,087: VERBOSE/Worker-2] Bad token error for Yann. Tokens for "csrf" used in request; invalidated them. [2016-02-04 06:01:33,719: WARNING/Worker-6] API error badtoken: Invalid token [2016-02-04 06:01:33,720: VERBOSE/Worker-6] Bad token error for Yann. Tokens for "csrf" used in request; invalidated them. [2016-02-04 06:01:33,722: VERBOSE/Worker-6] Found 1 commons:commons processes running, including this one. [2016-02-04 06:01:33,795: INFO/Worker-6] Sleeping for 9.8 seconds, 2016-02-04 06:01:33 [2016-02-04 06:01:34,726: WARNING/Worker-15] API error badtoken: Invalid token [2016-02-04 06:01:34,727: VERBOSE/Worker-15] Bad token error for Yann. Tokens for "csrf" used in request; invalidated them. [2016-02-04 06:01:34,787: INFO/Worker-15] Sleeping for 3.5 seconds, 2016-02-04 06:01:34