异步发送请求的几种方式

asyncio:
# import    asyncio
# def  fun1():
#     print(‘start‘)
#     yield   from   asyncio.sleep(1)
#     print(‘end‘)
#
# tasks=[
# fun1(),fun1()
# ]
# loop=asyncio.get_event_loop()
# loop.run_until_complete(asyncio.gather(*tasks))
# loop.close()

gevent:开启协程池

# ##协程池
#
# import   gevent
# import  requests
# def  task(method,url,req_kwargs):
#     print(method,url)
#     response=requests.request(method=method,url=url)
#     print(‘结果‘,response,response.content)
# from  gevent.pool import   Pool
# pool=Pool(4)
# gevent.joinall([
#     pool.spawn(task, method=‘get‘, url=‘http://www.baidu.com‘,req_kwargs={}),
#     pool.spawn(task, method=‘get‘, url=‘http://www.baidu.com‘,req_kwargs={}),
#     pool.spawn(task, method=‘get‘, url=‘http://www.baidu.com‘,req_kwargs={}),
#     pool.spawn(task, method=‘get‘, url=‘http://www.baidu.com‘,req_kwargs={})
# ]
# )
greenlet:是对gevent进一步的封装,详情请查看源码
# import   greenlet,grequests
# request_list=[
#     grequests.get(‘http://www.baidu.com‘),
#     grequests.get(‘http://www.baidu.com‘),
#     grequests.get(‘http://www.baidu.com‘),
#     grequests.get(‘http://www.baidu.com‘),
# ]
#
# ###执行并获取响应列表
# response_list=grequests.map(request_list,size=10)###后面是可以开启的协程池,后面可以加参数,详细请查看map方法
# print(response_list)
AsyncHTTPClient
from   tornado.httpclient import   AsyncHTTPClient
from    tornado.httpclient import  HTTPRequest
from   tornado  import  ioloop

count=0##设置计数器,当count为0的时候,就会终止这个死循环

‘‘‘咋这里进行处理这个请求,当请求处理完成之后,就会终止这个循环‘‘‘
def  handler_response(response):
    global   count
    count-=1###当计数器为0的时候,就会自动终止

    if  response.error:
        print(‘error‘)
    else:
        print(response.body)
    ###在下面进行判断,当是count为0,就进行终止这个循环,不在执行下去
    if  count==0:
        ioloop.IOLoop.current().stop()

‘‘‘在这里开启这个循环,循环遍历所有的eurl,进行事件循环的的遍历‘‘‘
def  fun():
    url_listy=[
        ‘http://www.baidu.com‘,
        ‘http://www.baidu.com‘,
        ‘http://www.baidu.com‘,
    ]
    for   url   in  url_listy:
        global  count###开启计数器
        count=len(url_listy)
        print(url)
        htt_client=AsyncHTTPClient()##3创建这个对象
        htt_client.fetch(HTTPRequest(url),handler_response)#####当执行完之前的url之后,就自动执行后面的回调函数的部分
        ##fetch是查询的意思,创建了httpreqeust里面,后面是回调函数

ioloop.IOLoop.current().add_callback(fun)###将全部的url加全部的事件循环里面
ioloop.IOLoop.current().start()

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10033680.html

时间: 2024-10-09 10:17:29

异步发送请求的几种方式的相关文章

前端向后台发送请求有几种方式?

1. link标签的href属性 2. script标签的src属性 3. img标签的src属性 4. ajax发送请求 5. 表单提交发送请求 6. a标签的href发送请求 7. iframe的src属性发送请求

java web前端发送请求的4种方式

表单 action, 链接href,js 绑定按钮 ajax绑定标签 <h1>通过表单提交参数</h1> <form action="/day46_v1/ServletDemo01?method=addUser" method="post"> 用户名:<input type="text" name="username"/><button>提交</button&g

前端向后端发送请求的几种方式

1.link标签的href属性 2.script标签的src属性 3.img标签的src属性 4.ajax发送请求 5.form 表单提交 6.a标签的href属性 7.iframe的src属性发送请求 参考:https://www.cnblogs.com/AmorR/p/8030133.html 原文地址:https://www.cnblogs.com/linhuaming/p/9130181.html

httpclient发送请求的几种方式

package asi; import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntit

android 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源

/** * @author [email protected] * @time 20140606 */ package com.intbird.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream

C#中Post请求的两种方式发送参数链和Body的

POST请求 有两种方式 一种是组装key=value这种参数对的方式 一种是直接把一个字符串发送过去 作为body的方式 我们在postman中可以看到 sfdsafd sdfsdfds public class KeyWordController : BaseController { private string listClassUrl = "http://192.168.1.171:8789/keywords/list_class"; public ActionResult L

解决 SharePoint 2010 拒绝访问爬网内容源错误的小技巧(禁用环回请求的两种方式)

这里有一条解决在SharePoint 2010搜索爬网时遇到的“拒绝访问错误”的小技巧. 首先要检查默认内容访问帐户是否具有相应的访问权限,或者添加一条相应的爬网规则.如果目标资源库是一个SharePoint库,验证一下该帐号是否具有对该SharePoint web应用程序具有至少“完全读取”的权限. 当我在升级上来的SharePoint环境中对我新建的博客URL进行爬网时遇到了这个错误. 这个错误发生在当你运行Windows 2008 R2和SharePoint 2010并且爬网进程试图访问一

[Python] 发送email的几种方式

python发送email还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现. 先把几个最简单的发送邮件方式记录下,像html邮件,附件等也是支持的,需要时查文档即可 1 登录邮件服务 #!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x #send_simple_email_by_account.

点评js异步加载的4种方式

主要介绍了点评js异步加载的4种方式,帮助大家更全面的了解js异步加载方式,感兴趣的小伙伴们可以参考一下 js异步加载的4种方式,点评开始. <!DOCTYPE html> <html> <head> <script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script> <script typ