`socket.gaierror` is raised if the host is not known
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 553
- Forks
- 177
- PR merge metrics
- No merged PRs in 30d
Description
Curious to know if this is intended behaviour or not.
Example:
>>> import statsd
>>> # use the default, "localhost"
... # there is _not_ a statsd server running on localhost:8125
... # initialises ok,
... sc = statsd.StatsClient()
>>> # this time, specify a random hostname
... # again, no statsd server running at this host
... # initialisation causes error
... sc = statsd.StatsClient(host='foobar')
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
File "/usr/local/lib/python3.7/site-packages/statsd/client/udp.py", line 35, in __init__
host, port, fam, socket.SOCK_DGRAM)[0]
File "/usr/local/lib/python3.7/socket.py", line 748, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
I'm wondering if it would be better to catch-pass this error? On the one hand, it's more in-line with the philosophy that errors with stats should not bring down the application, but on the other, I could imagine wanting to be sure that my application can log anything at all.
Perhaps a middle ground would be some kind of strict=True/False argument, which toggles between the behaviours?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading statsd/client/udp.py, where StatsClient initialization calls socket.getaddrinfo and raises socket.gaierror for an unknown host. The issue does not settle whether to suppress the error or add a strict option, so completion requires deciding the intended behavior and defining tests for it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100