Я пытаюсь выполнять параллельные вызовы внешнего API от django, используя запросы или любую другую библиотеку, которая позволяет мне это делать.
Я уже пытался использовать греквесты для выполнения этих вызовов, иногда это работает, но в большинстве случаев я получаю, что объект '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.
Могу ли я использовать запросы или любую другую библиотеку для выполнения вызовов без получения этих ошибок? если да, то как мне реализовать это в моей работе?