# Rhai Worker Binary A command-line worker for executing Rhai scripts from Redis task queues. ## Binary: `worker` ### Installation Build the binary: ```bash cargo build --bin worker --release ``` ### Usage ```bash # Basic usage - requires circle public key worker --circle-public-key # Custom Redis URL worker -c --redis-url redis://localhost:6379/1 # Custom worker ID and database path worker -c --worker-id my_worker --db-path /tmp/worker_db # Preserve tasks for debugging/benchmarking worker -c --preserve-tasks # Remove timestamps from logs worker -c --no-timestamp # Increase verbosity worker -c -v # Debug logging worker -c -vv # Full debug worker -c -vvv # Trace logging ``` ### Command-Line Options | Option | Short | Default | Description | |--------|-------|---------|-------------| | `--circle-public-key` | `-c` | **Required** | Circle public key to listen for tasks | | `--redis-url` | `-r` | `redis://localhost:6379` | Redis connection URL | | `--worker-id` | `-w` | `worker_1` | Unique worker identifier | | `--preserve-tasks` | | `false` | Preserve task details after completion | | `--db-path` | | `worker_rhai_temp_db` | Database path for Rhai engine | | `--no-timestamp` | | `false` | Remove timestamps from log output | | `--verbose` | `-v` | | Increase verbosity (stackable) | ### Features - **Task Queue Processing**: Listens to Redis queues for Rhai script execution tasks - **Performance Optimized**: Configured for maximum Rhai engine performance - **Graceful Shutdown**: Supports shutdown signals for clean termination - **Flexible Logging**: Configurable verbosity and timestamp control - **Database Integration**: Uses heromodels for data persistence - **Task Cleanup**: Optional task preservation for debugging/benchmarking ### How It Works 1. **Queue Listening**: Worker listens on Redis queue `rhailib:{circle_public_key}` 2. **Task Processing**: Receives task IDs, fetches task details from Redis 3. **Script Execution**: Executes Rhai scripts with configured engine 4. **Result Handling**: Updates task status and sends results to reply queues 5. **Cleanup**: Optionally cleans up task details after completion ### Configuration Examples #### Development Worker ```bash # Simple development worker worker -c dev_circle_123 # Development with verbose logging (no timestamps) worker -c dev_circle_123 -v --no-timestamp ``` #### Production Worker ```bash # Production worker with custom configuration worker \ --circle-public-key prod_circle_456 \ --redis-url redis://redis-server:6379/0 \ --worker-id prod_worker_1 \ --db-path /var/lib/worker/db \ --preserve-tasks ``` #### Benchmarking Worker ```bash # Worker optimized for benchmarking worker \ --circle-public-key bench_circle_789 \ --preserve-tasks \ --no-timestamp \ -vv ``` ### Error Handling The worker provides clear error messages for: - Missing or invalid circle public key - Redis connection failures - Script execution errors - Database access issues ### Dependencies - `rhailib_engine`: Rhai engine with heromodels integration - `redis`: Redis client for task queue management - `rhai`: Script execution engine - `clap`: Command-line argument parsing - `env_logger`: Logging infrastructure