使用Python API的MaxMind IP查找速度



我正在构建一个脚本来处理Web服务器日志,我正在尝试合并MaxMinds的IP数据集(http://dev.maxmind.com/geoip/geoip/legacy/geolite/)进入脚本以获取国家的命中来自。

当前,我的脚本只有将其提取我想要的信息时正常工作,但是当我尝试添加IP查找时,它会减慢大约1800%。因此,我很好奇这是否与我的代码有关,或者是否有一种方法可以加快速度。

例如,当我运行以下代码提取日期和IP地址时,对于此实验,大约需要6.5秒。

extractedData = []
for log in logList:
    ip = log[-1]
    date = log[0]
    dateIP = [date, ip]
    extractedData.append(dateIP)

当我添加pygeoip并尝试合并其减速的国家代码时。以下代码花了2个薄荷和7个千分之一。

extractedData = []
gi = pygeoip.GeoIP('/path/to/GeoIP.dat') 
for log in logList:
    ip = log[-1]
    country = gi.country_name_by_addr(ip)
    date = log[0]
    dateCountry = [date, country]
    extractedData.append(dateCountry)

所以,有没有办法加快这一速度,因为此查找会放慢地处理太多。

谢谢!

由于您正在进行许多查询,因此应将数据库加载到内存中。就目前而言,您会反复从磁盘上阅读,这很慢。

交换此行:

gi = pygeoip.GeoIP('/path/to/GeoIP.dat') 

gi = pygeoip.GeoIP('/path/to/GeoIP.dat', pygeoip.MEMORY_CACHE) 

我遇到了相同的问题,但在CentOS盒子上尝试了Python和PHP。通过Python脚本运行3M IP-ADDRESS花费了19.5分钟。应用内存_CACHE优化使其降低到8分钟。通过PHP脚本运行相同的数据花费了2-2/3分钟。

相关内容

  • 没有找到相关文章

最新更新