如何使用python请求进行多个api调用

布鲁斯

我试图使用请求或允许我执行此操作的任何其他库从Django并行调用外部api。

我已经尝试过使用grequests进行此调用,有时它可以工作,但是大多数情况下,我在客户端获取“ NoneType”对象没有属性“ json”错误。这是我的代码

views.py

def get_fixtures(request, league_id):
league_id = league_id

urls = [
    "https://api-football-v1.p.rapidapi.com/v2/fixtures/league/%d" % league_id,
    "https://api-football-v1.p.rapidapi.com/v2/leagues/league/%d" % league_id
]
headers = {'X-RapidAPI-Host': "api-football-v1.p.rapidapi.com", 'X-RapidAPI-Key': X_RapidAPI_Key}
resp = (grequests.get(u, headers=headers) for u in urls)
responses = grequests.map(resp)
a = responses[0].json()
b = responses[1].json()
fix_1 = a['api']['fixtures']
api_2 = b['api']['leagues']

context = {

    'fix_1': fix_1,
    'api_2': api_2,
}

return render(request, "pages/fixtures.html", context)

在服务器端,我收到此错误:

File "src\gevent\_greenlet_primitives.py", line 60, in 
gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src\gevent\_greenlet_primitives.py", line 64, in 
gevent.__greenlet_primitives.SwitchOutGreenletWithLoop.switch
File "src\gevent\__greenlet_primitives.pxd", line 35, in 
gevent.__greenlet_primitives._greenlet_switch
greenlet.error: cannot switch to a different thread.

我可以使用请求或任何其他库来执行调用而不会出现这些错误吗?如果是,我如何在工作中实施它?

何塞·路易斯·康多里·贾拉

尝试放置此:

resp = list(grequests.get(u, headers=headers) for u in urls)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在N秒内对M个请求进行节流方法调用

如何正确使用Siege对GET请求进行基准测试?

使用Python请求进行Cookie身份验证

如何通过继承在python中对请求进行子类化

使用Python请求进行Twitter抓取时如何执行oauth

多个请求进行翻新以合并结果

如何使用AWS Web API和Lambda对无服务器Web请求进行身份验证?

如何使用Python请求库调用API

使用python和请求进行Instagram身份验证

使用python中的请求进行curl命令复制

使用导航卫士或针对每个API请求进行角色/帐户检查

如何使用NodeJ中的请求进行多个API调用?

Django使用python请求进行身份验证

使用DockerHub的python请求进行JWT令牌认证

使用Python请求进行Magiccardmarket的OAuth身份验证

节点:如何使用https模块对请求进行分页?

使用请求进行网页搜集-Python

Rails&Devise使用POST请求进行注销。如何将其更改为DELETE请求?

Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

如何使用Android Studio和Web Api通过相同的请求进行发布和获取

使用多个AJAX请求进行laravel 5.2 mysql批量插入,toSql()错误

使用Python脚本响应中的请求进行Web抓取

如何在 Express 中使用请求进行 POST

使用启用 Cookie 的 Python 请求进行 Web 爬网

使用 Stripe API 时,是对每个请求进行排序还是本地存储并执行查询更好?

如何使用 Spring MVC 测试对多部分 POST 请求进行单元测试?

使用瓶颈对库中的 API 请求进行速率限制

如何防止使用异步请求进行多次验证?

无法在 Laravel 中使用 API 请求进行更新