diff --git a/appPublic/streamhttpclient.py b/appPublic/streamhttpclient.py index b821254..8d31220 100755 --- a/appPublic/streamhttpclient.py +++ b/appPublic/streamhttpclient.py @@ -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())