コード例 #1
0
    def daily_task_check():
        try:
            config = get_config_document()
            n = datetime.now(tz=tz)
            if config.latest_daily_check:
                lc = mongo_time_to_local(config.latest_daily_check, tz)
                if (n - lc) > timedelta(hours=1):
                    if 8 <= n.hour <= 21:
                        logger.debug(f'Performing vacation check task at {n}')
                        config.latest_daily_check = n
                        config.save()
                        daily_task()

            else:
                config.latest_daily_check = n
                config.save()

            config.reload()
            if config.latest_monthly_check:
                lc = mongo_time_to_local(config.latest_monthly_check, tz)
                if (n - lc) > timedelta(days=1):
                    if n.day == 1:
                        hr_logger.info(f'Performing monthly task at {n}')
                        config.latest_monthly_check = n
                        config.save()
                        monthly_task()
            else:
                config.latest_monthly_check = n
                config.save()
        except KeyboardInterrupt:
            return
        except:
            logger.exception('Exception occurred while performing daily check')
コード例 #2
0
def web_hook():
    logger.debug('Received new reqeuest')
    if request.headers.get('content-type') == 'application/json':
        logger.debug('Received json')
        json_string = request.get_data().decode('utf-8')
        update = types.Update.de_json(json_string)
        bot_handler.bot.process_new_updates([update])
        return ''
    else:
        abort(403)
コード例 #3
0
def get_layer_from_wfs(url_wfs, layer_name, crs, outputformat, retry_count=3):
    """
    Get layer from a wfs service.
    Args:
        1. url_wfs: full url of the WFS including https, excluding /?::
            https://map.data.amsterdam.nl/maps/gebieden
        2. layer_name: Title of the layer:: f.i. stadsdeel
        3. crs: coordinate system number, excluding EPSG::
            28992, 4326
        4. outputformat: leave empty to return standard GML (Geographic Markup language),
           otherwise: json, geojson, txt, shapezip
    Returns:
        The layer in the specified output format.
    """ 

    parameters = {
        "REQUEST": "GetFeature",
        "TYPENAME": layer_name,
        "SERVICE": "WFS",
        "VERSION": "2.0.0",
        "SRSNAME": "EPSG:{}".format(crs),
        "OUTPUTFORMAT": outputformat
    }

    logger.info("Requesting data from {}, layer: {}".format(
        url_wfs, layer_name))

    retry = 0

    # webrequests sometimes fail..
    while retry < retry_count:
        response = requests.get(url_wfs, params=parameters)
        logger.debug(response)
        if response.status_code == 400:
            logger.info("Incorrect layer name: {}, please correct the layer name".format(layer_name))
            continue
        if response.status_code != 200:
            time.sleep(3)
            # try again..
            retry += 1
        else:
            # status 200. Yeah!.
            break

    if outputformat in ('geojson, json'):
        geojson = response.json()
        logger.info("{} features returned.".format(str(len(geojson["features"]))))
        return geojson
    
    return response
コード例 #4
0
ファイル: helpers.py プロジェクト: Raschert0/tennis_bot
def retrieve_data(spreadsheetId,
                  range,
                  valueRenderOption='FORMATTED_VALUE',
                  majorDimension='ROWS',
                  dateTimeRenderOption='SERIAL_NUMBER'):
    try:
        logger.debug(f'Started retrieving data at {datetime.now()}')
        guard.account_forced_get()
        data = gsheets.values().get(
            spreadsheetId=spreadsheetId,
            range=range,
            valueRenderOption=valueRenderOption,
            majorDimension=majorDimension,
            dateTimeRenderOption=dateTimeRenderOption).execute()
        logger.debug(f'Finished retrieving data at {datetime.now()}')
        return data
    except HttpError as e:
        logger.exception(
            'Exception occurred while retrieving data from spreadsheet')
        return None
コード例 #5
0
ファイル: helpers.py プロジェクト: Raschert0/tennis_bot
def update_data(spreadsheetId,
                range,
                values,
                data_as_cols=False,
                valueInputOption='USER_ENTERED'):
    try:
        logger.debug(f'Started data update at {datetime.now()}')
        guard.account_forced_update()
        majorDimension = 'COLUMNS' if data_as_cols else 'ROWS'
        result = gsheets.values().update(
            spreadsheetId=spreadsheetId,
            range=range,
            body={
                'values': values,
                'majorDimension': majorDimension
            },
            valueInputOption=valueInputOption).execute()
        logger.debug(f'Finished data update at {datetime.now()}')
        return result
    except HttpError as e:
        logger.exception('Exception occurred while updating spreadsheet')
        return None
コード例 #6
0
def pre_request(worker, req):
    from logger_settings import logger

    logger.debug('Gunicorn request arrived')