mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-11-19 03:25:32 +00:00
Change event loop policy on windows
Support more versions from curl_cffi
This commit is contained in:
parent
bb481a03ab
commit
7b9ad21de8
@ -1,12 +1,19 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import asyncio, sys
|
||||
from asyncio import AbstractEventLoop
|
||||
|
||||
import browser_cookie3
|
||||
|
||||
_cookies: dict[str, dict[str, str]] = {}
|
||||
# Change event loop policy on windows
|
||||
if sys.platform == 'win32':
|
||||
if isinstance(
|
||||
asyncio.get_event_loop_policy(), asyncio.WindowsProactorEventLoopPolicy
|
||||
):
|
||||
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
||||
|
||||
# Local Cookie Storage
|
||||
_cookies: dict[str, dict[str, str]] = {}
|
||||
|
||||
# If event loop is already running, handle nested event loops
|
||||
# If "nest_asyncio" is installed, patch the event loop.
|
||||
|
@ -8,10 +8,12 @@ from aiohttp.base_protocol import BaseProtocol
|
||||
|
||||
from curl_cffi.requests import AsyncSession as BaseSession
|
||||
from curl_cffi.requests import Response
|
||||
from curl_cffi import AsyncCurl
|
||||
|
||||
is_newer_0_5_9 = hasattr(AsyncCurl, "remove_handle")
|
||||
is_newer_0_5_8 = hasattr(BaseSession, "_set_cookies")
|
||||
import curl_cffi
|
||||
|
||||
is_newer_0_5_8 = hasattr(BaseSession, "_set_cookies") or hasattr(curl_cffi.requests.Cookies, "get_cookies_for_curl")
|
||||
is_newer_0_5_9 = hasattr(curl_cffi.AsyncCurl, "remove_handle")
|
||||
is_newer_0_5_10 = hasattr(BaseSession, "release_curl")
|
||||
|
||||
class StreamResponse:
|
||||
def __init__(self, inner: Response, content: StreamReader, request):
|
||||
@ -65,6 +67,15 @@ class StreamRequest:
|
||||
async def __aenter__(self) -> StreamResponse:
|
||||
self.curl = await self.session.pop_curl()
|
||||
self.enter = self.loop.create_future()
|
||||
if is_newer_0_5_10:
|
||||
request, _, header_buffer, _, _ = self.session._set_curl_options(
|
||||
self.curl,
|
||||
self.method,
|
||||
self.url,
|
||||
content_callback=self.on_content,
|
||||
**self.options
|
||||
)
|
||||
else:
|
||||
request, _, header_buffer = self.session._set_curl_options(
|
||||
self.curl,
|
||||
self.method,
|
||||
|
Loading…
Reference in New Issue
Block a user