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')
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)
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
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
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
def pre_request(worker, req): from logger_settings import logger logger.debug('Gunicorn request arrived')