class SQLiteEventConsumer(EventConsumer):
    type_name = "sql"

    def __init__(self, should_run_liveness_endpoint: bool = False):
        from rasa.core.brokers.sql import SQLEventBroker

        self.producer = SQLEventBroker()
        super().__init__(should_run_liveness_endpoint)

    def consume(self):
        logger.info("Start consuming SQLite events from database 'events.db'.")
        with self.producer.session_scope() as session:
            while True:
                new_events = (session.query(
                    self.producer.SQLBrokerEvent).order_by(
                        self.producer.SQLBrokerEvent.id.asc()).all())

                for event in new_events:
                    self.log_event(
                        event.data,
                        sender_id=event.sender_id,
                        event_number=event.id,
                        origin=DEFAULT_RASA_ENVIRONMENT,
                    )
                    session.delete(event)
                    session.commit()

                time.sleep(0.01)
Esempio n. 2
0
def _create_from_endpoint_config(
    endpoint_config: Optional[EndpointConfig],
) -> Optional["EventBroker"]:
    """Instantiate an event broker based on its configuration."""

    if endpoint_config is None:
        broker = None
    elif endpoint_config.type is None or endpoint_config.type.lower() == "pika":
        from rasa.core.brokers.pika import PikaEventBroker

        # default broker if no type is set
        broker = PikaEventBroker.from_endpoint_config(endpoint_config)
    elif endpoint_config.type.lower() == "sql":
        from rasa.core.brokers.sql import SQLEventBroker

        broker = SQLEventBroker.from_endpoint_config(endpoint_config)
    elif endpoint_config.type.lower() == "file":
        from rasa.core.brokers.file import FileEventBroker

        broker = FileEventBroker.from_endpoint_config(endpoint_config)
    elif endpoint_config.type.lower() == "kafka":
        from rasa.core.brokers.kafka import KafkaEventBroker

        broker = KafkaEventBroker.from_endpoint_config(endpoint_config)
    else:
        broker = _load_from_module_string(endpoint_config)

    if broker:
        logger.debug(f"Instantiated event broker to '{broker.__class__.__name__}'.")
    return broker
Esempio n. 3
0
async def test_close_resources(loop: AbstractEventLoop):
    broker = SQLEventBroker()
    app = Mock()
    app.agent.tracker_store.event_broker = broker

    with pytest.warns(None) as warnings:
        await run.close_resources(app, loop)

    assert len(warnings) == 0
Esempio n. 4
0
async def test_closing_broker():
    exporter = MockExporter(event_broker=SQLEventBroker())

    # noinspection PyProtectedMember
    exporter._fetch_events_within_time_range = Mock(return_value=[])

    # run the export function
    with pytest.warns(None) as warnings:
        await exporter.publish_events()

    assert len(warnings) == 0
    def __init__(self, should_run_liveness_endpoint: bool = False):
        from rasa.core.brokers.sql import SQLEventBroker

        self.producer = SQLEventBroker()
        super().__init__(should_run_liveness_endpoint)