Skip to content

Instantly share code, notes, and snippets.

@sagar-rout
Created October 25, 2020 09:48
Show Gist options
  • Select an option

  • Save sagar-rout/dff30a03b31d847d6430a635bf812937 to your computer and use it in GitHub Desktop.

Select an option

Save sagar-rout/dff30a03b31d847d6430a635bf812937 to your computer and use it in GitHub Desktop.

Revisions

  1. sagar-rout created this gist Oct 25, 2020.
    55 changes: 55 additions & 0 deletions app.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,55 @@
    import os
    import requests
    from datetime import datetime, timedelta
    import json
    import json_logging
    import logging
    import sys

    # log is initialized without a web framework name
    json_logging.init_non_web(enable_json=True)

    logger = logging.getLogger("weather-data-download")
    logger.setLevel(logging.INFO)
    logger.addHandler(logging.StreamHandler(sys.stdout))

    CITY_CODE = os.getenv('CITY_CODE')
    OPEN_WEATHER_API_KEY = os.getenv('OPEN_WEATHER_API_KEY')
    OPEN_WEATHER_API = os.getenv('OPEN_WEATHER_API')


    def download_city_next_hour_weather_data():
    """
    Download weather data for city
    """
    start_time = datetime.now()
    end_time = (start_time + timedelta(hours=1))

    requests_params = {'id': CITY_CODE, 'appid': OPEN_WEATHER_API_KEY}

    response = requests.get(url=OPEN_WEATHER_API, params=requests_params)

    logger.info(msg='Response status ' + str(response.status_code))

    city_weather = json.loads(response.text)['main']

    is_data_valid = validate_weather_data(city_weather)
    if not is_data_valid:
    logger.error("Data is missing for this hour.")


    def validate_weather_data(city_weather):

    required_fields = ['temp', 'temp_min', 'temp_max', 'pressure', 'humidity']

    is_data_valid = True
    for required_field in required_fields:
    if required_field not in city_weather:
    is_data_valid = False

    return is_data_valid


    def lambda_handler(event, context):
    logger.info(event)
    download_city_next_hour_weather_data()