Nasa API 传递数据太慢了

问题描述 投票:0回答:1

我正在尝试从 NASA API 获取近地小行星数据。 我正在获取所需的数据,但速度非常慢。如何优化我的代码以快速获取数据?

    @api_view(['GET'])
    def getDates(request, start_date, end_date):
        dates = []
        all_data = list()
        api_key = '****************************'

        url_neo_feed = "https://api.nasa.gov/neo/rest/v1/feed?"
        params = {
            'api_key': api_key,
            'start_date': start_date,
            'end_date': end_date
        }
        response = requests.get(url_neo_feed, params=params)
        json_data = orjson.loads(response.text)
        date_asteroids = json_data['near_earth_objects']
        for date in date_asteroids:
            dates.append(date)
   
        # Splitting the data to make it more meaningful
        for date in dates:
            collection = json_data.get('near_earth_objects')
            all_dates = collection.get('{}'.format(date))
            all_data.append(all_dates)
        return Response(all_data)
python json django api performance
1个回答
1
投票

NASA 的 API 显然需要 8 秒才能响应 4 天的数据。

您的处理代码需要很短的时间(少于 0.01 秒)来处理该数据。

对于 NASA 的 API 缓慢的情况,您无能为力,但如果您的应用程序可以的话,您可以在本地缓存给定时间段的数据;随后对该范围的请求将几乎是即时的。

您可以使用例如Django 的缓存(确保将其配置为 DummyCache 之外的其他内容才能看到效果):

from django.core.cache import cache

@api_view(['GET'])
def getDates(request, start_date, end_date):
    cache_key = f'nasa_neo_{start_date}_{end_date}'
    json_data = cache.get(cache_key)
    if not json_data:
        response = requests.get("https://api.nasa.gov/neo/rest/v1/feed?", params={
            'api_key': api_key,
            'start_date': start_date,
            'end_date': end_date
        })
        response.raise_for_status()
        json_data = orjson.loads(response.text)
        cache.set(cache_key, json_data, timeout=86400)

    date_asteroids = ...
© www.soinside.com 2019 - 2024. All rights reserved.