Как я могу получить ответ API с Brython? - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь создать небольшую функцию, которая получает ответы от API Spotify через Brython (браузер Python) для более крупного проекта.

Проблема в том, что она не работает, когда я попробуйте получить localStorage['apiResponse'], потому что кажется, что Python не ждет завершения on_complete и выполнения основной функции, не беспокоясь о том, что localStorage пока пуст (что приводит меня к получению пустой строки вместо ответа API). .

Я пробовал много вещей, таких как set_timeout() или aio.sleep (в asyn c 'ed функции), но оба они не ждут окончания выполнения и переходят к остальным программы.

Также while зацикливает зависание браузера ... (как указано в этот вопрос )

from browser import ajax #to make requests
from browser.local_storage import storage as localStorage #to access HTML5 Local Storage

import json #to convert a json-like string into a Python Dict

#Request to the API
def on_complete(req):
    if req.status==200 or req.status==0:
        localStorage['apiResponse'] = req.text
    else:
        print("An error occured while asking Spotify for data")

def apiRequest(requestUrl, requestMethod):
    req = ajax.ajax()
    req.bind('complete', on_complete)
    req.open(requestMethod, requestUrl, True)
    req.set_header('Authorization', localStorage['header'])
    req.send()

У меня есть заголовок с моим токеном в localStorage['header'] для тех, кому интересно.

Проблема не в запросе к API, потому что я вижу, что запрос работает на моей вкладке «Сеть» моего Chrome DevTools.

Python 3 и Brython 3.8.7

...