Ejemplo n.º 1
0
import os

from kafka import KafkaConsumer
from sqlalchemy import create_engine
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session

import kafka_producer

Base = automap_base()
# Create the engine to the database
engine = create_engine('mysql+mysqldb://demouser:[email protected]:3306/rivandb')
Base.prepare(engine, reflect=True)
ErrorCodes = kafka_producer.ErrorCodes
session = Session(engine)
session.bind_table(table=ErrorCodes, bind=engine)


def consume_kafka():
    """When a fix message is received, update the database"""
    consumer = KafkaConsumer('rivan-fix-msg', bootstrap_servers=[os.environ.get('KAFKA_SERVER_INTERNAL_IP')])
    for message in consumer:
        print("Updating column {}".format(message.value.decode()))
        session.query(ErrorCodes.id, ErrorCodes.active_state). \
            filter(ErrorCodes.id == int(message.value.decode())). \
            update({"active_state": False})
        session.commit()


if __name__ == '__main__':
    try: