This commit is contained in:
yumoqing 2025-07-02 14:23:59 +08:00
parent 2c0a46d0f7
commit 226f91dc90

View File

@ -27,6 +27,12 @@ async def liner(async_gen):
await asyncio.sleep(0)
yield l
def get_non_verify_ssl():
ssl_context = ssl.create_default_context(cafile=certifi.where())
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
return ssl_context
class StreamHttpClient:
def __init__(self, socks5_url="socks5://127.0.0.1:1086"):
home = os.path.expanduser("~")
@ -46,6 +52,23 @@ class StreamHttpClient:
with self.socks_url_file.open("a") as f:
f.write(url + "\n")
async def request(self, method, url, *,
headers=None,
params=None,
data=None,
json=None,
files=None,
chunk_size=1024, **kw):
ret = b''
async for chunk in self.__call__(method, url, headers=headers,
params=params,
data=data,
json=json,
files=files,
chunk_size=1024, **kw):
ret += chunk
return ret
async def __call__(self, method, url, *,
headers=None,
params=None,
@ -103,11 +126,17 @@ class StreamHttpClient:
connector = ProxyConnector.from_url(self.socks5_url) if use_socks else None
async with aiohttp.ClientSession(connector=connector) as session:
req_args = kw
req_args = {k:v for k,v in kw.items() if k not in ['verify']}
ssl_context = self.ssl_context
if 'verify' in kw.keys() and kw.get('verify') == False:
ssl_context = get_non_verify_ssl()
else:
ssl_context = self.ssl_context
req_args.update({
"headers": headers,
"params": params,
"ssl": self.ssl_context,
"ssl": ssl_context,
})
if files:
@ -142,11 +171,9 @@ if __name__ == '__main__':
else:
prompt = 'who are you'
hc = StreamHttpClient()
url = 'http://devops.opencomputing.ai/v1/chat/completions'
headers={'Content-Type': 'application/json'}
data='{ "model": "devstral", "stream":true, "messages":[ { "role":"user", "content":"' + prompt + '" } ] }'
async for chunk in hc('POST', url, data=data, headers=headers):
print(chunk)
url = 'https://www.baidu.com'
x = await hc.request('GET', url, verify=False, timeout=2)
print(x)
asyncio.new_event_loop().run_until_complete(main())