# encoding: utf-8

import asyncio
import requests
import functools url = "http://ip.zxinc.org/api.php" params_list = [] # 存放所有要查询的参数
with open("IPv6.txt", 'r', encoding='utf-8') as f:
for ip in f:
ip = ip.strip()
payload = {"type": "json", "ip": ip}
params_list.append(payload) def save_result(res): # task回调函数
print(res)
params, response = res.result() # 这就是get_ip_location函数的返回值,通过异步任务的result函数获取 if response.status_code == 500:
with open("save_result22.txt", "a+", encoding="utf-8") as f1:
f1.write(params["ip"] + " = 地址有误" + "\n")
else:
result = response.json()
country = result["data"]["country"]
with open("save_result22.txt", "a+", encoding="utf-8") as f1:
f1.write(params["ip"] + " = " + country + "\n") async def get_ip_location(param): # 发送get请求
print("start ", param)
# param = {"type": "json", "ip": "1.1.1.1"} param是requests.get的参数
loop = asyncio.get_event_loop()
try:
# 要使用await, 必须将第三方包转为awaitable对象
response = await loop.run_in_executor(None, functools.partial(requests.get, url=url, params=param))
return param, response
except Exception as e:
return param, e tasks = []
for param in params_list:
task = asyncio.ensure_future(get_ip_location(param)) # 1.创建异步任务
task.add_done_callback(save_result) # 2.给任务添加回调函数
tasks.append(task)
loop = asyncio.get_event_loop() # 3.创建事件循环
loop.run_until_complete(asyncio.wait(tasks)) # 4.执行所有异步任务

python36异步任务 获取ip地址的地理位置的更多相关文章

  1. php获取ip地址所在的地理位置的实现

    1,通过腾讯或者新浪提供的接口来获取(新浪和腾讯类似) <?php     function getIPLocation($queryIP){      $url = 'http://ip.qq ...

  2. Linux下Python获取IP地址

    <lnmp一键安装包>中需要获取ip地址,有2种情况:如果服务器只有私网地址没有公网地址,这个时候获取的IP(即私网地址)不能用来判断服务器的位置,于是取其网关地址用来判断服务器在国内还是 ...

  3. PHP 获取IP地址位置信息「聚合数据API」

    聚合数据 提供了[查询IP所属区域]的服务接口,只需要以 GET 请求的方式向 API 传入 IP地址 和 APPKEY 即可获得查询结果. 这里的难点主要在于如何通过PHP获取客户端IP地址,以及如 ...

  4. windows下获取IP地址的两种方法

    windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...

  5. 【PHP开发篇】一个统计客户端商机提交的获取IP地址

    1.对客服提交数据的ip地址记录. 获取ip地址的方法: public function getIP() { global $ip; if (getenv("HTTP_X_REAL_IP&q ...

  6. 获取 IP 地址

    package j2se.core.net.base; import java.net.InetAddress;import java.net.UnknownHostException; public ...

  7. js获取IP地址方法总结_转

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  8. iOS 获取IP地址

    一.获取本机IP地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #import <ifadd ...

  9. 【Qt】QT5 获取IP地址

    QT获取本机IP地址 #include <QtNetwork/QHostAddress> #include <QtNetwork/QNetworkInterface> #inc ...

随机推荐

  1. jsp页面都放在web-inf下面说是要防止用户直接访问jsp页面,为么不能直接访问jsp

    为了保护那部分jsp页面,如果没有登录验证,那部分jsp用户可以直接访问,这样很不安全,放在WEB-INF下面,就使得只能WEB-INF文件夹外jsp页面调用里面的jsp,这样来使用,就比如我们有一个 ...

  2. java随笔——HashMap与红黑树

    前言: hashmap是一种很常用的数据结构,其使用方便快捷,接下来笔者将给大家深入解析这个数据结构,让大家能在用的时候知其然,也知其所以然. 一.Map 首先,从最基本的讲起,我们先来认识一下map ...

  3. UDP通讯

    上一篇有说到TCP通讯,这篇来谈谈UDP通讯方式 基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低.至于可靠性,可通过应用层的控制来满足.(不可靠连接) (1).建立一个套接字(Sock ...

  4. [UWP]xaml中自定义附加属性使用方法的注意项

    ---恢复内容开始--- 随笔小记,欢迎指正 在UWP平台上做WVVM的时候,想针对ListBox的SelectionChanged事件定义一个自定义的命令,于是使用自定义附加属性的方式.可是最后自定 ...

  5. Android 载入 HTML

    Android 中载入 HTML 有两种方式: 1. 用 TextView.setText(Html.fromHtml("<html></html>")); ...

  6. GO学习笔记 - 没有参数的 return 语句返回各个返回变量的当前值,这种用法被称作“裸”返回。

    Go 的返回值可以被命名,并且就像在函数体开头声明的变量那样使用. 返回值的名称应当具有一定的意义,可以作为文档使用. 没有参数的 return 语句返回各个返回变量的当前值.这种用法被称作“裸”返回 ...

  7. IDEA不能实时更新jsp页面的问题

    第一步: 第二步 第三步: 将这三个选项 改成

  8. eclipse的debug模式经常自动跳到TheadPoolExecutor的断点

    1.问题:eclipse的debug模式经常自动跳到TheadPoolExecutor的断点,实在烦人 解决方法是: 在eclipse中选择Window->Preference->Java ...

  9. java简单正则验证手机号

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Title:Tadesfza * @Description ...

  10. ObjectARX动态添加AutoCAD传统下拉菜单入门篇(一)

    ObjectARX动态添加传统下拉菜单入门篇 图文by edata  , 转载注明出处 http://www.cnblogs.com/edata AutoCAD 添加传统下拉菜单有很多种方式,比较典型 ...