コード例 #1
0

#callback function, this function is called when some register is updated in the database
def set_relays_state(op_document=None):
    state_rel_1 = db.relays.find({"relay": 1})[0]['state']
    state_rel_2 = db.relays.find({"relay": 2})[0]['state']

    if int(state_rel_1) == 1:
        print(int(state_rel_1), ' rel_1 state')
        GPIO.output(relayPin1, GPIO.LOW)
    else:
        print(int(state_rel_1), ' rel_1 state')
        GPIO.output(relayPin1, GPIO.HIGH)

    if int(state_rel_2) == 1:
        print(int(state_rel_2), ' rel_2 state')
        GPIO.output(relayPin2, GPIO.LOW)
    else:
        print(int(state_rel_2), ' rel_2 state')
        GPIO.output(relayPin2, GPIO.HIGH)

    print('Document updated!')


#starting
set_relays_state()

# listens to update
triggers.register_update_trigger(set_relays_state, 'test_relays', 'relays')
triggers.tail_oplog()
コード例 #2
0
from mongotriggers import MongoTrigger
from pymongo import MongoClient
from time import sleep

def notify_manager(op_document):
    print ('Document updated!')

client = MongoClient(host='localhost', port=27017)
triggers = MongoTrigger(client)

# listens to update
triggers.register_update_trigger(notify_manager, 'my_account', 'my_transactions')
triggers.tail_oplog()

while True:
    print("inside the bucle")
    sleep(20)
コード例 #3
0
ファイル: trigger_handler.py プロジェクト: nickfh7/new_dAuth
class TriggerHandler:
    # Takes in client, db name, and collection name
    # Optional logger function to capture logs
    def __init__(self, client, db_name, collection_name, logger=None):
        self.client = client
        self.database = client[db_name]
        self.triggers = MongoTrigger(client)
        self.logger = logger  # used to send logs back to manager

        self.db_name = db_name
        self.collection_name = collection_name

        # Set trigger on collection
        self.triggers.register_insert_trigger(self._handle_insert, db_name=db_name, collection_name=collection_name)
        self.triggers.register_update_trigger(self._handle_update, db_name=db_name, collection_name=collection_name)
        self.triggers.register_delete_trigger(self._handle_delete, db_name=db_name, collection_name=collection_name)

        # Trigger callbacks
        self.insert_callback = None
        self.update_callback = None
        self.delete_callback = None


    # Start watching for new operations
    def start_triggers(self):
        self.log("Setting triggers on " + str(self.db_name) + " -> " + str(self.collection_name))
        self.triggers.tail_oplog()

    # Stop watching and release triggers
    def stop_triggers(self):
        self.log("Stopping triggers")
        self.triggers.stop_tail()


    def set_insert_callback(self, insert_callback):
        self.log("Setting insert callback")
        self.insert_callback = insert_callback

    def set_update_callback(self, update_callback):
        self.log("Setting update callback")
        self.update_callback = update_callback

    def set_delete_callback(self, delete_callback):
        self.log("Setting delete callback")
        self.delete_callback = delete_callback


    # --- Trigger functions ---
    # Build operation based on op type, called by mongo triggers
    def _handle_insert(self, op_document):
        self.log("Triggered on insert")
        self.insert_callback(op_document['o']['_id'], op_document['o'].get('imsi'))
        
    def _handle_update(self, op_document):
        self.log("Triggered on update")
        self.update_callback(op_document['o2']['_id'])

    def _handle_delete(self, op_document):
        self.log("Triggered on delete <!!! NOT SUPPORTED !!!>")
        self.delete_callback(op_document['o']['_id'])

    def log(self, message):
        if self.logger:
            self.logger("(TriggerHandler) " + message)