def check_config(config):
    if len(config.sections()) == 0:
        logger = get_logger(__name__)
        logger.error('Config file not found.')
        return False

    if 'measurement-server' not in config or 'measurements' not in config:
        logger = get_logger(__name__)
        logger.error('Provided configuration is not correct.')
        return False

    return True
def run():
    config = configparser.ConfigParser()

    # Previous config data is overwritten with the data from consecutive files,
    # so the more important the file is, the further down the list it is.
    config.read(['config.ini.example', 'config.ini'])

    if not check_config(config):
        exit(1)

    server_config = config['measurement-server']

    sender = None
    try:
        sender = JsonMeasurementSender(server_config['login'],
                                       server_config['password'],
                                       server_config['protocol'],
                                       server_config['address'],
                                       server_config['port'],
                                       server_config['api_version'])
        logger = get_logger(__name__)
        logger.info('Created a JSON measurement sender')
    except KeyError:
        logger = get_logger(__name__)
        logger.error('Error while creating a measurement sender.')
        exit(1)

    measurements_config = config['measurements']

    try:
        measurement_idle_time = timedelta(
            seconds=int(measurements_config['measurement_idle_time']))
        measurement_duration = timedelta(
            seconds=int(measurements_config['measurement_duration']))
    except TypeError as e:
        logger = get_logger(__name__)
        logger.error('Incorrect measurement timings. %s', str(e))

        logger.info('Using default values for measurement timings')
        # Filling in with default values.
        measurement_idle_time = timedelta(seconds=60)
        measurement_duration = timedelta(seconds=10)

    mr = MeasurementReader(measurement_idle_time, measurement_duration, 2,
                           sender)

    temperature_source = DhtThermometer('Thermometer 1', 4)
    mr.add_source(temperature_source)

    mr.start_to_measure()
Пример #3
0
 def __init__(self, idle_time, duration, number_of_measurements, sender):
     self.log = get_logger(__name__)
     self.sender = sender
     self.idle_time = idle_time
     self.duration = duration
     self.number_of_measurements = number_of_measurements
     self.sources = {}
    def __init__(self, login, password, server_protocol, server_address,
                 server_port, api_version):
        self.login = login
        self.password = password
        self.server_protocol = server_protocol
        self.server_address = server_address
        self.server_port = server_port
        self.api_version = api_version

        self.log = get_logger(__name__)

        self.authentication_token = None

        self.base_api_url = '{}://{}:{}/api/{}'.format(self.server_protocol,
                                                       self.server_address,
                                                       self.server_port,
                                                       self.api_version)
Пример #5
0
#!/usr/bin/env python3
import webutil, time, logging
from threading import Thread
from source.hackernews.document import Document
from source import get_logger

DEFAULT_CONFIG = {
    'delay': 2,
    'interval': 60,
    'pages': 3
}

logger = get_logger(__name__)

def get_stories(pages):
    stories = []
    for page in range(1, pages + 1):
        stories.extend(get_stories_of_page(page))

    return reversed(stories)

def get_stories_of_page(page):
    stories = []
    page = webutil.get_page('https://news.ycombinator.com/news?p={}'.format(page))

    if page:
        for story in page.find_all('tr', class_='athing'):
            story_id = int(story.attrs['id'])
            story_link = story.find('a', class_='storylink')
            url = story_link.attrs['href']
            title = story_link.text