ipify的官方客户端库:一个简单的ip地址api。

ipif的Python项目详细描述


ipify简单IP的官方客户端库 地址api

python-ipify Releasepython-ipify Downloadspython-ipify Buildhttps://coveralls.io/repos/rdegges/python-ipify/badge.svg?branch=master

目的

ipify是 互联网。它快速,简单,可扩展,开源,资金充足(由我!)。

简而言之:如果你需要一种实用的方法来获取你的公共IP地址,ipify 是最好的选择!

这个库将从ipify的api服务中检索您的公共ip地址,并且 作为字符串返回。再简单不过了。

这个库还有其他一些您可能关心的功能:

  • 如果请求因任何原因失败,则使用 最大有效性的指数退避算法。
  • 这个库可以正确地处理异常,下面的使用示例向您展示 如何以万无一失的方式处理错误。
  • 此库仅通过https发出api请求。

安装

要安装ipify,只需运行:

$ pip install ipify

这将自动安装库的最新版本。

用法

使用这个库非常简单。下面是一个简单的示例:

>>>fromipifyimportget_ip>>>ip=get_ip()>>>ipu'96.41.136.144'

现在,关于异常处理,有几种方法可能会失败:

  • ipify服务已关闭(不太可能),或:
  • 由于网络错误,您的计算机无法获取ipify请求 某种类型的(DNS,没有互联网等)。

以下是如何处理所有这些边缘情况:

fromipifyimportget_ipfromipify.exceptionsimportConnectionError,ServiceErrortry:ip=get_ip()exceptConnectionError:# If you get here, it means you were unable to reach the ipify service,# most likely because of a network error on your end.exceptServiceError:# If you get here, it means ipify is having issues, so the request# couldn't be completed :(except:# Something else happened (non-ipify related). Maybe you hit CTRL-C# while the program was running, the kernel is killing your process, or# something else all together.

如果要简化上述错误处理,还可以执行 在(之后,它将捕获任何与ipify相关的错误,无论 它们可以是):

fromipifyimportget_ipfromipify.exceptionsimportIpifyExceptiontry:ip=get_ip()exceptIpifyException:# If you get here, then some ipify exception occurred.except:# If you get here, some non-ipify related exception occurred.

要记住一件事:不管你决定如何处理异常, ipify库将在发出任何失败的请求之前重试3次 异常–因此,如果do需要处理异常,请记住重试 已经尝试了逻辑。

贡献

这个项目是唯一可能的,因为惊人的贡献者谁的工作!

如果你想改进这个库,请给我一个请求!我很高兴 查看和合并拉取请求。

标准贡献工作流应该如下所示:

  • 在github上派生此项目。
  • 在主分支中进行一些更改(此项目很简单,因此不需要 使事情复杂化。
  • 准备好后发送拉取请求。

另外,如果您正在进行更改,请为您的更改编写测试–此 project有一个完整的测试套件,您可以轻松地修改/测试。

要运行测试套件,可以使用以下命令:

$ pip install -e .
$ pip install -r requirements.txt
$ python manage.py test

更改日志

所有库更改,按降序排列。

版本1.0.0

2015年5月6日发布。

  • 第一次释放!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名