How to make python .post() requests to retry?
In urllib3 POST
is not allowed as a retried method by default (since it can cause multiple inserts). You can force it though:
Retry(total=3, allowed_methods=frozenset(['GET', 'POST']))
See https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html#urllib3.util.retry.Retry
You can use tenacity.
doc: https://tenacity.readthedocs.io/en/latest/
And you can log before or after
pip install tenacity
import logginglogging.basicConfig(stream=sys.stderr, level=logging.DEBUG)logger = logging.getLogger(__name__)@retry(stop=stop_after_attempt(3), before=before_log(logger, logging.DEBUG))def post_something(): # post raise MyException("Fail")