Taragolis commented on PR #39799:
URL: https://github.com/apache/airflow/pull/39799#issuecomment-2129045571

   I guess the main prom that there is no standardisation for 
[`no_proxy`](https://about.gitlab.com/blog/2021/01/27/we-need-to-talk-no-proxy/)
 and different libraries / os could work differently
   
   Most of the libraries use stdlib implementation from 
[Lib/urllib/request.py](https://github.com/python/cpython/tree/3.12/Lib/urllib/request.py)
   
   Request use own implementation which supports CIDR blocks, but only for ipv4:
   - https://github.com/psf/requests/issues/6313
   
   ```python
   import os
   
   os.environ["no_proxy"] = 
"localhost,127.0.0.1,10.0.0.0/8,172.16.1.*,1:2:3::/64"
   os.environ["NO_PROXY"] = "localhost,127.0.0.1,192.168.1.0/16"
   
   # stdlib implementation
   from urllib.request import proxy_bypass_environment
   # requests implementation
   from requests.sessions import should_bypass_proxies
   
   hosts = ("localhost", "127.0.0.1", "127.0.0.2", "10.0.0.0", "192.168.1.32", 
"172.16.1.2", "[1:2:3::4]")
   for host in hosts:
       print(f" {host} ".center(80, '='))
       print(f"stdlib Proxy Bypass Environment: {proxy_bypass_environment(host, 
None)}")
       print(f"requests Proxy Bypass Environment: 
{should_bypass_proxies(f"http://{host}";, None)}")
   ```
   
   ```console
   ================================== localhost 
===================================
   stdlib Proxy Bypass Environment: True
   requests Proxy Bypass Environment: True
   ================================== 127.0.0.1 
===================================
   stdlib Proxy Bypass Environment: True
   requests Proxy Bypass Environment: True
   ================================== 127.0.0.2 
===================================
   stdlib Proxy Bypass Environment: False
   requests Proxy Bypass Environment: False
   =================================== 10.0.0.0 
===================================
   stdlib Proxy Bypass Environment: False
   requests Proxy Bypass Environment: True
   ================================= 192.168.1.32 
=================================
   stdlib Proxy Bypass Environment: False
   requests Proxy Bypass Environment: False
   ================================== 172.16.1.2 
==================================
   stdlib Proxy Bypass Environment: False
   requests Proxy Bypass Environment: False
   ================================== [1:2:3::4] 
==================================
   stdlib Proxy Bypass Environment: False
   requests Proxy Bypass Environment: False
   ```
   
   I don't know what is supposed to be happen in case if we change library in 
the future, e.g. from `requests` to `urllib3`, or use `aiohttp` in case if we 
turn internal code to async implementation (`asyncio` / `anyio` / `trio`)
   
   So probably it is fine for replace `httpx` by `requests`, and I'm pretty 
sure that in past this was called by requests before we temporary remove usage 
of requests due to licence issue: https://github.com/apache/airflow/pull/15781. 
However there is **should not be a commitment that this behaviour remaining the 
same** in the future, because this part of the code usually can't be changed 
without monkey patching third-party library / stdlib


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to