# -*- coding: utf-8 -*-
# !/usr/bin/env python
# Software: PyCharm
# __author__ == "YU HAIPENG"
# fileName: async_send.py
# Month: 五月
# time: 2020/5/13 16:06
""" 异步请求方法 """
import os
import six
import json
import binascii
from abc import ABC
from io import BytesIO
from urllib.parse import urlencode
from requests.utils import requote_uri
from tornado.httpclient import AsyncHTTPClient, HTTPError
__all__ = ["TornadoSend", "encode_multipart_form_data"]
class AsyncHttpClient(AsyncHTTPClient, ABC):
""" 给 AsyncHTTPClient 加 with 方法 """
async def __aenter__(self, max_clients=500):
return AsyncHTTPClient(max_clients=max_clients)
async def __aexit__(self, exc_type, exc_val, exc_tb):
self.close()
def __enter__(self):
return AsyncHTTPClient()
def __exit__(self, exc_type, exc_val, exc_tb):
self.close()
class TornadoSend:
""" TornadoSend 网络请求 """
@staticmethod
async def send(url, *, data=None, headers=None, params=None, user_agent=None, http_error_callback=None, **kwargs):
"""
:param url:
:param http_error_callback: http_error_callback(code:int, e:HTTPError) -> None
:param data:
:param params:
:param user_agent:
:param headers:Optional[Union[Dict[str, str], httputil.HTTPHeaders]] = None,
timeout params:Optional[float] = None,
:param kwargs:
body: Optional[Union[bytes, str]] = None,
auth_username: Optional[str] = None,
auth_password: Optional[str] = None,
auth_mode: Optional[str] = None,
connect_timeout: Optional[float] = None,
if_modified_since:
tornado_async_send
最新推荐文章于 2023-04-08 15:00:51 发布
本文深入探讨Tornado Web框架如何实现异步HTTP请求发送,通过实例解析其背后的异步原理和使用技巧,帮助开发者提升服务性能。
摘要由CSDN通过智能技术生成