Kinda random, but are you sure the server expects JSON? Some old-school APIs want form-encoded data. Try:
```python
response = requests.post(url, data={'key': 'value'})
```
Also, slap on some basic auth if needed:
```python
auth = ('user', 'pass')
response = requests.post(url, json=..., auth=auth)
```
For timeouts, yeah, always set one. Retries? I just wrap it in a for-loop with sleeps. Not fancy but ¯\_(ツ)_/¯
```python
response = requests.post(url, data={'key': 'value'})
```
Also, slap on some basic auth if needed:
```python
auth = ('user', 'pass')
response = requests.post(url, json=..., auth=auth)
```
For timeouts, yeah, always set one. Retries? I just wrap it in a for-loop with sleeps. Not fancy but ¯\_(ツ)_/¯
