python36异步任务 获取ip地址的地理位置
# 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地址的地理位置的更多相关文章
- php获取ip地址所在的地理位置的实现
1,通过腾讯或者新浪提供的接口来获取(新浪和腾讯类似) <?php function getIPLocation($queryIP){ $url = 'http://ip.qq ...
- Linux下Python获取IP地址
<lnmp一键安装包>中需要获取ip地址,有2种情况:如果服务器只有私网地址没有公网地址,这个时候获取的IP(即私网地址)不能用来判断服务器的位置,于是取其网关地址用来判断服务器在国内还是 ...
- PHP 获取IP地址位置信息「聚合数据API」
聚合数据 提供了[查询IP所属区域]的服务接口,只需要以 GET 请求的方式向 API 传入 IP地址 和 APPKEY 即可获得查询结果. 这里的难点主要在于如何通过PHP获取客户端IP地址,以及如 ...
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
- 【PHP开发篇】一个统计客户端商机提交的获取IP地址
1.对客服提交数据的ip地址记录. 获取ip地址的方法: public function getIP() { global $ip; if (getenv("HTTP_X_REAL_IP&q ...
- 获取 IP 地址
package j2se.core.net.base; import java.net.InetAddress;import java.net.UnknownHostException; public ...
- js获取IP地址方法总结_转
js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...
- 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 ...
- 【Qt】QT5 获取IP地址
QT获取本机IP地址 #include <QtNetwork/QHostAddress> #include <QtNetwork/QNetworkInterface> #inc ...
随机推荐
- vim 命令全
1 简介 vim是文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.下面讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用 ...
- Myeclipse文件没出错,但是项目上显示有错的解决办法
因工作原因,同事将他的java项目交接给了我.和平时的交接一样.他把他最新的源代码,打成压缩包,发给我.我解压后,使用myeclipse开发工具,通过导入,将项目导入到我的开发工具中,这个时候有一个问 ...
- C#学习(2):委托
1.疑问: 1.委托是什么? 2.为什么需要委托? 3.委托能用来做什么? 4.如何自定义委托? 5..NET默认的委托类型有哪几种? 6.怎样使用委托? 7.多播委托是什么? 8什么是泛型委托? 9 ...
- ASP.NET Core学习总结(3)
我们重点来看看这个InvokeInnerFilterAsync. protected override async Task InvokeInnerFilterAsync() { var next = ...
- 解决IIS中Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
- java学习笔记DOM4J解析(7)
DOM4J即Document Object Model for Java使用java技术以文档方式解析XML数据的模型. DOM4J是开源组织提供的一个免费的.强大的XML解析工具,如果开发者需要在项 ...
- Problem D: GJJ的日常之暴富梦(水题)
Contest - 河南省多校连萌(四) Problem D: GJJ的日常之暴富梦 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 693 Solve ...
- 【12c OCP】CUUG OCP认证071考试原题解析(34)
34.choose two View the Exhibit and examine the structure of the PRODUCT_INFORMATION and INVENTORIES ...
- [转] Foobar2000 DSP音效外挂元件-Part4
[转] Foobar2000 DSP音效外挂元件-Part4 在第1部分的文章里主要介绍了foobar2000预设的DSP音效调整,这些则示要介绍几个比较会用到的DSP外挂元件,在foobar2000 ...
- Vim 中的持久撤消
Vim中的持久撤消 阅读文本大约需要俩分钟. 在 Vim 中像其他文本编辑器一样,你可以在当前会话中执行 "撤销/重做" .当一旦会话关闭,则你需要重新打开一个新文章,运行撤销将不 ...