This commit is contained in:
2026-06-30 01:49:11 -03:00
parent 52c93d2cd5
commit b1572c029e
5 changed files with 10 additions and 9 deletions
+3 -1
View File
@@ -29,7 +29,7 @@ O `docker-compose.yml` já sobe:
Para o fluxo RTSP com Redis, use `docker-compose.redis-rtsp.yml`: Para o fluxo RTSP com Redis, use `docker-compose.redis-rtsp.yml`:
- `redis` como fila. Ele publica a porta `6379`, então workers externos podem apontar `REDIS_URL` para esse host. - `redis` como fila. Ele publica a porta `6379`, então workers externos podem apontar `REDIS_URL` para esse host.
- `coordinator` para ler `camfinder-open-rtsp.csv` e alimentar a fila com blocos de IPs. O CSV também é copiado para a imagem, então o deploy não depende só de bind mount. - `coordinator` para ler `camfinder-open-rtsp.csv` e alimentar a fila com blocos de IPs. No modo simples/local, monte o repositório inteiro em `/app`.
- `worker-1` e `worker-2` para consumir blocos, testar paths RTSP e salvar screenshots e SQLite. - `worker-1` e `worker-2` para consumir blocos, testar paths RTSP e salvar screenshots e SQLite.
Para escalar workers: Para escalar workers:
@@ -38,6 +38,8 @@ Para escalar workers:
Para um worker em outra máquina, aponte `REDIS_URL` para o Redis do coordenador, por exemplo `redis://<host>:6379/0`, e use o mesmo `RTSP_QUEUE_NAME`. Para um worker em outra máquina, aponte `REDIS_URL` para o Redis do coordenador, por exemplo `redis://<host>:6379/0`, e use o mesmo `RTSP_QUEUE_NAME`.
Se estiver usando o compose local, monte `./:/app` para coordinator e workers RTSP. O coordinator lê `camfinder-open-rtsp.csv` e `rtsp_paths.txt` da raiz do repo.
Para workers de outras máquinas, use `vps.valmo.dev:666` como endereço do coordenador. Para workers de outras máquinas, use `vps.valmo.dev:666` como endereço do coordenador.
## Scripts ## Scripts
+3 -4
View File
@@ -18,8 +18,7 @@ services:
depends_on: depends_on:
- redis - redis
volumes: volumes:
- ./camfinder-open-rtsp.csv:/app/camfinder-open-rtsp.csv:ro - ./:/app
- ./dump:/app/dump
worker-1: worker-1:
build: . build: .
@@ -34,7 +33,7 @@ services:
- redis - redis
- coordinator - coordinator
volumes: volumes:
- ./dump:/app/dump - ./:/app
worker-2: worker-2:
build: . build: .
@@ -49,7 +48,7 @@ services:
- redis - redis
- coordinator - coordinator
volumes: volumes:
- ./dump:/app/dump - ./:/app
volumes: volumes:
camfinder-redis: camfinder-redis:
+1 -1
View File
@@ -13,7 +13,7 @@ services:
environment: environment:
REDIS_URL: redis://redis:6379/0 REDIS_URL: redis://redis:6379/0
RTSP_QUEUE_NAME: camfinder:rtsp:queue RTSP_QUEUE_NAME: camfinder:rtsp:queue
RTSP_INPUT_CSV: /app/camfinder-open-rtsp.csv RTSP_INPUT_CSV: /usr/local/share/camfinder/camfinder-open-rtsp.csv
RTSP_WORKER_COUNT: 2 RTSP_WORKER_COUNT: 2
depends_on: depends_on:
- redis - redis
+2 -2
View File
@@ -61,7 +61,7 @@ impl Config {
.unwrap_or_else(|| read_env("RTSP_QUEUE_NAME", "camfinder:rtsp:queue")), .unwrap_or_else(|| read_env("RTSP_QUEUE_NAME", "camfinder:rtsp:queue")),
redis_input_csv: cli redis_input_csv: cli
.redis_input_csv .redis_input_csv
.unwrap_or_else(|| read_env("RTSP_INPUT_CSV", "camfinder-open-rtsp.csv")), .unwrap_or_else(|| read_env("RTSP_INPUT_CSV", "/app/camfinder-open-rtsp.csv")),
redis_worker_count: cli redis_worker_count: cli
.redis_worker_count .redis_worker_count
.or_else(|| parse_usize("RTSP_WORKER_COUNT", 2).ok()) .or_else(|| parse_usize("RTSP_WORKER_COUNT", 2).ok())
@@ -463,7 +463,7 @@ fn load_rtsp_paths(file: Option<&Path>, inline: Option<&str>) -> Result<Vec<Stri
} }
} }
load_rtsp_paths_from_file(Path::new("rtsp_paths.txt")) load_rtsp_paths_from_file(Path::new("/app/rtsp_paths.txt"))
} }
fn load_rtsp_paths_from_file(file: &Path) -> Result<Vec<String>> { fn load_rtsp_paths_from_file(file: &Path) -> Result<Vec<String>> {
+1 -1
View File
@@ -79,7 +79,7 @@ pub async fn run_redis_worker(
let mut processed = 0usize; let mut processed = 0usize;
let mut captured = 0usize; let mut captured = 0usize;
let paths = normalize_paths(&config.rtsp_paths); let paths = normalize_paths(&config.rtsp_paths);
let credentials = load_rtsp_credentials(Path::new("main_ids.json"))?; let credentials = load_rtsp_credentials(Path::new("/app/main_ids.json"))?;
println!( println!(
"worker pronto para {} paths, {} credenciais e fila {}", "worker pronto para {} paths, {} credenciais e fila {}",