tornado_async_send

本文深入探讨Tornado Web框架如何实现异步HTTP请求发送,通过实例解析其背后的异步原理和使用技巧,帮助开发者提升服务性能。
摘要由CSDN通过智能技术生成
# -*- 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:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值