mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-09-17 10:29:29 -04: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
|
from __future__ import annotations
|
||||||
|
|
||||||
import asyncio
|
import asyncio, sys
|
||||||
from asyncio import AbstractEventLoop
|
from asyncio import AbstractEventLoop
|
||||||
|
|
||||||
import browser_cookie3
|
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 event loop is already running, handle nested event loops
|
||||||
# If "nest_asyncio" is installed, patch the event loop.
|
# 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 AsyncSession as BaseSession
|
||||||
from curl_cffi.requests import Response
|
from curl_cffi.requests import Response
|
||||||
from curl_cffi import AsyncCurl
|
|
||||||
|
|
||||||
is_newer_0_5_9 = hasattr(AsyncCurl, "remove_handle")
|
import curl_cffi
|
||||||
is_newer_0_5_8 = hasattr(BaseSession, "_set_cookies")
|
|
||||||
|
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:
|
class StreamResponse:
|
||||||
def __init__(self, inner: Response, content: StreamReader, request):
|
def __init__(self, inner: Response, content: StreamReader, request):
|
||||||
@ -65,6 +67,15 @@ class StreamRequest:
|
|||||||
async def __aenter__(self) -> StreamResponse:
|
async def __aenter__(self) -> StreamResponse:
|
||||||
self.curl = await self.session.pop_curl()
|
self.curl = await self.session.pop_curl()
|
||||||
self.enter = self.loop.create_future()
|
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(
|
request, _, header_buffer = self.session._set_curl_options(
|
||||||
self.curl,
|
self.curl,
|
||||||
self.method,
|
self.method,
|
||||||
|
Loading…
Reference in New Issue
Block a user