XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

perf(async): migrate provider cookie lookups to get_cookies_async to prevent event loop blocking

ba4807b4
Anand Mall <anand@example.com>
提交于

代码差异

9 个文件 +20 -19
Modified g4f/Provider/helper.py +1 -1
@@ -1,3 +1,3 @@
1 1 from ..providers.helper import *
2 from ..cookies import get_cookies
2 from ..cookies import get_cookies, get_cookies_async
3 3 from ..requests.aiohttp import get_connector
Modified g4f/Provider/needs_auth/BingCreateImages.py +2 -2
@@ -1,6 +1,6 @@
1 1 from __future__ import annotations
2 2
3 from ...cookies import get_cookies
3 from ...cookies import get_cookies, get_cookies_async
4 4 from ...providers.response import ImageResponse
5 5 from ...errors import MissingAuthError
6 6 from ...typing import AsyncResult, Messages, Cookies
@@ -51,7 +51,7 @@ class BingCreateImages(AsyncGeneratorProvider, ProviderModelMixin):
51 51 Returns:
52 52 str: Markdown formatted string with images.
53 53 """
54 cookies = self.cookies or get_cookies(".bing.com", False)
54 cookies = self.cookies or await get_cookies_async(".bing.com", False)
55 55 if cookies is None or "_U" not in cookies:
56 56 raise MissingAuthError('Missing "_U" cookie')
57 57 async with create_session(cookies, self.proxy) as session:
Modified g4f/Provider/needs_auth/BlackboxPro.py +2 -2
@@ -18,7 +18,7 @@ from ...cookies import get_cookies_dir
18 18 from ..helper import format_media_prompt, render_messages
19 19 from ...providers.response import JsonConversation, ImageResponse
20 20 from ...tools.media import merge_media
21 from ...cookies import get_cookies
21 from ...cookies import get_cookies, get_cookies_async
22 22 from ...errors import RateLimitError, NoValidHarFileError
23 23 from ... import debug
24 24
@@ -2711,7 +2711,7 @@ class BlackboxPro(AsyncGeneratorProvider, ProviderModelMixin):
2711 2711 if not cls.session_data:
2712 2712 async with session.get(
2713 2713 "https://www.blackbox.ai/api/auth/session",
2714 cookies=get_cookies(cls.cookie_domain, False),
2714 cookies=await get_cookies_async(cls.cookie_domain, False),
2715 2715 ) as resp:
2716 2716 resp.raise_for_status()
2717 2717 cls.session_data = await resp.json()
Modified g4f/Provider/needs_auth/Cerebras.py +2 -2
@@ -5,7 +5,7 @@ from aiohttp import ClientSession
5 5 from .OpenaiAPI import OpenaiAPI
6 6 from ...typing import AsyncResult, Messages, Cookies
7 7 from ...requests.raise_for_status import raise_for_status
8 from ...cookies import get_cookies
8 from ...cookies import get_cookies, get_cookies_async
9 9
10 10
11 11 class Cerebras(OpenaiAPI):
@@ -38,7 +38,7 @@ class Cerebras(OpenaiAPI):
38 38 ) -> AsyncResult:
39 39 if api_key is None:
40 40 if cookies is None:
41 cookies = get_cookies(".cerebras.ai")
41 cookies = await get_cookies_async(".cerebras.ai")
42 42 async with ClientSession(cookies=cookies) as session:
43 43 async with session.get(
44 44 "https://inference.cerebras.ai/api/auth/session"
Modified g4f/Provider/needs_auth/Claude.py +2 -2
@@ -4,7 +4,7 @@ import os
4 4
5 5 from ...typing import Messages, AsyncResult
6 6 from ...errors import MissingAuthError
7 from ...cookies import get_cookies
7 from ...cookies import get_cookies, get_cookies_async
8 8 from ..template import OpenaiTemplate
9 9
10 10
@@ -29,7 +29,7 @@ class Claude(OpenaiTemplate):
29 29 **kwargs,
30 30 ) -> AsyncResult:
31 31 api_key = os.environ.get("CLAUDE_COOKIE", api_key)
32 cookies = cookies or get_cookies(cls.cookie_domain)
32 cookies = cookies or await get_cookies_async(cls.cookie_domain)
33 33 if not api_key:
34 34 api_key = "; ".join([f"{key}={value}" for key, value in cookies.items()])
35 35 if not api_key:
Modified g4f/Provider/needs_auth/DeepSeek.py +3 -3
@@ -6,7 +6,7 @@ from datetime import datetime
6 6 from typing import Any, Optional, Literal
7 7
8 8 from g4f import debug
9 from g4f.cookies import get_cookies, get_headers
9 from g4f.cookies import get_cookies, get_cookies_async, get_headers
10 10 from g4f.errors import MissingAuthError, ResponseError
11 11 from g4f.image import to_bytes, detect_file_type
12 12 from g4f.providers.base_provider import AsyncGeneratorProvider, ProviderModelMixin
@@ -472,7 +472,7 @@ class DeepSeek(AsyncGeneratorProvider, ProviderModelMixin):
472 472
473 473 @classmethod
474 474 async def get_quota(cls, **kwargs):
475 cookies = get_cookies(cls.cookie_domain, False)
475 cookies = await get_cookies_async(cls.cookie_domain, False)
476 476 headers = _normalized_headers(get_headers(cls.cookie_domain) or {})
477 477 if cookies and headers.get("authorization"):
478 478 return {"success": True}
@@ -807,7 +807,7 @@ class DeepSeek(AsyncGeneratorProvider, ProviderModelMixin):
807 807 source_headers = dict(headers or {})
808 808 # Try to get auth from HAR file first
809 809 if cookies is None:
810 cookies = get_cookies(cls.cookie_domain, False)
810 cookies = await get_cookies_async(cls.cookie_domain, False)
811 811 discovered_headers = get_headers(cls.cookie_domain) or {}
812 812 # Explicit caller headers override browser/HAR values, including when
813 813 # their casing differs (normalization happens below).
Modified g4f/Provider/needs_auth/Gemini.py +4 -3
@@ -53,6 +53,7 @@ from ..helper import (
53 53 format_media_prompt,
54 54 format_prompt,
55 55 get_cookies,
56 get_cookies_async,
56 57 get_last_user_message,
57 58 )
58 59 from .gemini_utils import (
@@ -546,7 +547,7 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
546 547 @classmethod
547 548 async def get_quota(cls, **kwargs):
548 549 if not cls._cookies:
549 cls._cookies = get_cookies(GOOGLE_COOKIE_DOMAIN, False, True)
550 cls._cookies = await get_cookies_async(GOOGLE_COOKIE_DOMAIN, False, True)
550 551 if not cls._cookies:
551 552 raise MissingAuthError('Missing or invalid "__Secure-1PSID" cookie')
552 553 async with ClientSession(
@@ -568,7 +569,7 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
568 569 if cookies is not None:
569 570 cls._cookies = cookies
570 571 elif cls._cookies is None:
571 cls._cookies = get_cookies(GOOGLE_COOKIE_DOMAIN, False, True)
572 cls._cookies = await get_cookies_async(GOOGLE_COOKIE_DOMAIN, False, True)
572 573 request_cookies = dict(cls._cookies or {})
573 574 base_connector = get_connector(connector, proxy)
574 575
@@ -644,7 +645,7 @@ class Gemini(AsyncGeneratorProvider, ProviderModelMixin):
644 645 if cookies is not None:
645 646 cls._cookies = cookies
646 647 elif cls._cookies is None:
647 cls._cookies = get_cookies(GOOGLE_COOKIE_DOMAIN, False, True)
648 cls._cookies = await get_cookies_async(GOOGLE_COOKIE_DOMAIN, False, True)
648 649 request_cookies = dict(cls._cookies or {})
649 650 authenticated_session = _has_authenticated_session(request_cookies)
650 651 conversation = _resolve_gemini_conversation(
Modified g4f/Provider/needs_auth/GithubCopilot.py +2 -2
@@ -8,7 +8,7 @@ from ...typing import AsyncResult, Messages, Cookies
8 8 from ...requests.raise_for_status import raise_for_status
9 9 from ...requests.aiohttp import get_connector
10 10 from ...providers.helper import format_prompt, get_last_user_message
11 from ...cookies import get_cookies
11 from ...cookies import get_cookies, get_cookies_async
12 12
13 13
14 14 class Conversation(BaseConversation):
@@ -93,7 +93,7 @@ class GithubCopilot(AsyncGeneratorProvider, ProviderModelMixin):
93 93 model = cls.default_model
94 94
95 95 if cookies is None:
96 cookies = get_cookies("github.com")
96 cookies = await get_cookies_async("github.com")
97 97
98 98 async with ClientSession(
99 99 connector=get_connector(proxy=proxy),
Modified g4f/Provider/needs_auth/WhiteRabbitNeo.py +2 -2
@@ -5,7 +5,7 @@ from aiohttp import ClientSession, BaseConnector
5 5 from ...typing import AsyncResult, Messages, Cookies
6 6 from ...requests.raise_for_status import raise_for_status
7 7 from ..base_provider import AsyncGeneratorProvider
8 from ..helper import get_cookies, get_connector, get_random_string
8 from ..helper import get_cookies, get_cookies_async, get_connector, get_random_string
9 9
10 10
11 11 class WhiteRabbitNeo(AsyncGeneratorProvider):
@@ -25,7 +25,7 @@ class WhiteRabbitNeo(AsyncGeneratorProvider):
25 25 **kwargs,
26 26 ) -> AsyncResult:
27 27 if cookies is None:
28 cookies = get_cookies("www.whiterabbitneo.com")
28 cookies = await get_cookies_async("www.whiterabbitneo.com")
29 29 headers = {
30 30 "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0",
31 31 "Accept": "*/*",