MetaGPT

Форк
0
/
ahttp_client.py 
49 строк · 1.4 Кб
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
# @Desc   : pure async http_client
4

5
from typing import Any, Mapping, Optional, Union
6

7
import aiohttp
8
from aiohttp.client import DEFAULT_TIMEOUT
9

10

11
async def apost(
12
    url: str,
13
    params: Optional[Mapping[str, str]] = None,
14
    json: Any = None,
15
    data: Any = None,
16
    headers: Optional[dict] = None,
17
    as_json: bool = False,
18
    encoding: str = "utf-8",
19
    timeout: int = DEFAULT_TIMEOUT.total,
20
) -> Union[str, dict]:
21
    async with aiohttp.ClientSession() as session:
22
        async with session.post(url=url, params=params, json=json, data=data, headers=headers, timeout=timeout) as resp:
23
            if as_json:
24
                data = await resp.json()
25
            else:
26
                data = await resp.read()
27
                data = data.decode(encoding)
28
    return data
29

30

31
async def apost_stream(
32
    url: str,
33
    params: Optional[Mapping[str, str]] = None,
34
    json: Any = None,
35
    data: Any = None,
36
    headers: Optional[dict] = None,
37
    encoding: str = "utf-8",
38
    timeout: int = DEFAULT_TIMEOUT.total,
39
) -> Any:
40
    """
41
    usage:
42
        result = astream(url="xx")
43
        async for line in result:
44
            deal_with(line)
45
    """
46
    async with aiohttp.ClientSession() as session:
47
        async with session.post(url=url, params=params, json=json, data=data, headers=headers, timeout=timeout) as resp:
48
            async for line in resp.content:
49
                yield line.decode(encoding)
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.