使用python异步框架aiohttp从NASA抓取火星图片

原作:PAWEŁ FERTYK  翻译:大江狗

原文链接:https://pfertyk.me/2017/06/getting-mars-photos-from-nasa-using-aiohttp/

小编注:aiohttp是基于asyncio实现的异步http框架。本文案例也可以使用异步django实现。

我是Andy Weir写的《火星人》一书的忠实粉丝。阅读时,我想知道马克·沃特尼(Mark Watney)绕着红色星球走的感觉如何。最近,多亏了 Twilio的这篇博文, 我发现NASA提供了一个公共API,可以提供火星漫游者拍摄的照片。但是,由于不是MMS的忠实拥护者,我决定编写自己的应用程序,以将具有启发性的图像直接传递到我的浏览器中。

创建aiohttp应用程序

让我们从一个简单的应用程序开始,只是为了启动和运行aiohttp。首先,创建一个新的virtualenv。建议使用Python 3.5以后版本,因为我们将使用asyncio提供的async defawait语法。如果您想进一步开发该项目并利用异步理解的优势,则可以使用Python 3.6(本例使用python版本)。接下来,安装aiohttp:

pip install aiohttp

现在创建一个python文件(称为nasa.py),并将一些代码放入其中:

from aiohttp import web

async def get_mars_photo(request):
    return web.Response(text='A photo of Mars')

app = web.Application()
app.router.add_get('/', get_mars_photo, name='mars_photo')

如果您不熟悉aiohttp,则可能需要说明以下几点:

  • get_mars_photo协程是一个请求处理程序;它以HTTP请求作为唯一参数,并负责返回HTTP响应(或引发异常)

  • app是高级服务器;它支持路由器,中间件和信号(对于该程序,我们将仅使用路由器)

  • app.router.add_get 在HTTP GET方法和'/'路径上注册请求处理程序

注意:请求处理程序不必一定是协程,它们可以是常规函数。但是我们将使用asyncio的功能,因此程序中的大多数函数都将使用进行定义async def

运行应用程序

要运行您的应用程序,您可以在文件末尾添加以下行:

web.run_app(app, host='127.0.0.1', port=8080)

然后像运行其他任何Python脚本一样运行它:

python nasa.py

但是有更好的方法。在许多第三方库中,您可以找到aiohttp-devtools。它提供了一个很好的runserver命令,可以自动检测您的应用并支持实时重载:

pip install aiohttp-devtools
adev runserver -p 8080 nasa.py

现在如果您访问localhost:8080,则应该在浏览器中看到"A photo of m

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值