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)
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
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
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)