Omitidas: perfiles por nodo y perfil consciente del datacenter; no se usan en el trabajo normal --- <!-- _class: code -- > # Un perfil de ejecución por nodo No hay un parámetro «ejecuta esto aquí»: para llevar una consulta a un nodo concreto se crea un perfil por nodo, **después** de conectar ```python from cassandra.policies import WhiteListRoundRobinPolicy for numero, host in enumerate(cluster.metadata.all_hosts(), start=1): cluster.add_execution_profile( f"node{numero}", ExecutionProfile( # host.address: dirección publicada, no el servicio Docker load_balancing_policy=WhiteListRoundRobinPolicy([host.address]), consistency_level=ConsistencyLevel.ONE, request_timeout=40.0, row_factory=named_tuple_factory, ), ) ``` --- <!-- _class: code -- > # Perfil consciente del *datacenter* `DCAwareRoundRobinPolicy` es la política habitual en producción, junto con `LOCAL_ONE`/`LOCAL_QUORUM`: las consultas no cruzan la WAN. El nombre del DC **no** se codifica a mano — se toma de los metadatos ya descubiertos: ```python from cassandra.policies import DCAwareRoundRobinPolicy local_dc = cluster.metadata.all_hosts()[0].datacenter # no hardcodear el nombre cluster.add_execution_profile( "local_dc", ExecutionProfile( load_balancing_policy=TokenAwarePolicy(DCAwareRoundRobinPolicy(local_dc=local_dc)), consistency_level=ConsistencyLevel.LOCAL_ONE, request_timeout=40.0, row_factory=named_tuple_factory, ), ) ```