sei lá
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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 {}",
|
||||||
|
|||||||
Reference in New Issue
Block a user