В процессе использования API Eventbrite для создания веб-сайта с его событиями, однако, я застрял в том, как реализовать проект.
В настоящее время я хочу отфильтровать события по датам и показать их наОднако на первой странице Eventbrite API ограничивается только 50 элементами на странице.Запрос API выдвигает 86 страниц по 50 позиций на каждой.
Как я могу представить эти события сразу, уменьшив время ожидания?То, что у меня сейчас есть, занимает 104 секунды, чтобы ответить и отобразить результаты на странице.Я поверхностно рассматриваю теорию обозначений Big O, однако, я думаю, что я использую O (n²).
вот код:
rout.py:
from flask import Flask, render_template
from eventbrite import Eventbrite
from datetime import datetime
import requests, json
app = Flask(__name__)
# TODO: Remove outh key in file and register in sys
oKey = ‘<oauth-key>’
o_token_url = '&token={0}'.format(oKey)
@app.route("/")
def index():
base_url = 'https://www.eventbriteapi.com/v3/'
regions_url = base_url + 'system/regions/?token={0}'.format(oKey)
regions_result = requests.get(regions_url)
regions_obj = regions_result.json()
e_url = base_url + 'events/search/?token={0}&location.address=<city>&start_date.range_start=2018-07-02T12%3A00%3A00Z&page=2'.format(oKey)
e_result = requests.get(e_url)
e_obj = e_result.json()
list_events = []
for pg in range(1, e_obj['pagination']['page_count']):
print(pg)
startTime = datetime.now()
e_url = base_url + 'events/search/?token={0}&location.address=<city>&start_date.range_start=2018-07-02T12%3A00%3A00Z&page={1}'.format(oKey, pg)
e_result = requests.get(e_url)
e_obj = e_result.json()
for i in e_obj['events']:
an_event = {}
an_event['name'] = i['name']['text']
list_events.append(htx_event)
print(datetime.now() - startTime)
return render_template('index.html', events=list_events)
if __name__ == "__main__":
app.run(host='0.0.0.0')
index.html:
{% for event in events %}
{{event['name']}}<br>
{% endfor %}
Я знаю о пакетных запросах EB API конечная точка однако я не могу понять, как отправить список словарей URL с запросами.
Буду признателен за любые советы по оптимизации приведенного выше кода.Я подумал, что могу ограничить количество событий, отображаемых в любой момент времени, однако, интересуясь, как другие подойдут к этому вопросу.