import logging import argparse import requests import json from data.queue import webhook_queue from workers.worker import Worker root_logger = logging.getLogger('') root_logger.setLevel(logging.DEBUG) FORMAT = '%(asctime)-15s - %(levelname)s - %(pathname)s - %(funcName)s - %(message)s' formatter = logging.Formatter(FORMAT) logger = logging.getLogger(__name__) class WebhookWorker(Worker): def process_queue_item(self, job_details): url = job_details['url'] payload = job_details['payload'] headers = {'Content-type': 'application/json'} try: resp = requests.post(url, data=json.dumps(payload), headers=headers) if resp.status_code/100 != 2: logger.error('%s response for webhook to url: %s' % (resp.status_code, url)) return False except requests.exceptions.RequestException as ex: logger.exception('Webhook was unable to be sent: %s' % ex.message) return False return True logging.config.fileConfig('conf/logging.conf', disable_existing_loggers=False) worker = WebhookWorker(webhook_queue, poll_period_seconds=15, reservation_seconds=3600) worker.start()