updates :)
This commit is contained in:
@@ -16,10 +16,15 @@ from logger import get_logger
|
||||
log = get_logger(__name__)
|
||||
|
||||
|
||||
def _load_active_flow() -> dict[str, object]:
|
||||
cfg = asyncio.run(flow_config_repo.get_active())
|
||||
if cfg is None:
|
||||
log.warning("No active flow config — running without dynamic flow steps.")
|
||||
def _load_flow(cfg_id: int | None = None) -> dict[str, object]:
|
||||
if cfg_id is not None:
|
||||
cfg = asyncio.run(flow_config_repo.get(cfg_id))
|
||||
if cfg is None:
|
||||
log.error("Flow config %d not found.", cfg_id)
|
||||
else:
|
||||
cfg = asyncio.run(flow_config_repo.get_first())
|
||||
if cfg is None:
|
||||
log.warning("No flow configs found — running without dynamic flow steps.")
|
||||
return cfg or {}
|
||||
|
||||
|
||||
@@ -56,7 +61,7 @@ def _record(
|
||||
log.info("%s OK (no flow config) — %d ms", identifier, total_ms)
|
||||
|
||||
|
||||
def run_otp(phone: str) -> None:
|
||||
def run_otp(phone: str, cfg_id: int | None = None) -> None:
|
||||
from crawler.driver import driver_session
|
||||
from crawler.dynamic_flow import DynamicFlow
|
||||
from crawler.scenarios.otp_login import OTPLoginScenario
|
||||
@@ -64,7 +69,7 @@ def run_otp(phone: str) -> None:
|
||||
def otp_resolver(p: str) -> str:
|
||||
raise NotImplementedError("Implement otp_resolver to fetch OTP from your SMS gateway")
|
||||
|
||||
flow_cfg = _load_active_flow()
|
||||
flow_cfg = _load_flow(cfg_id)
|
||||
target_url: str = flow_cfg.get("target_url") or "" if flow_cfg else ""
|
||||
t0 = time.monotonic()
|
||||
try:
|
||||
@@ -77,12 +82,12 @@ def run_otp(phone: str) -> None:
|
||||
_record("otp", phone, result, None, t0)
|
||||
|
||||
|
||||
def run_fresh() -> None:
|
||||
def run_fresh(cfg_id: int | None = None) -> None:
|
||||
from crawler.driver import driver_session
|
||||
from crawler.dynamic_flow import DynamicFlow
|
||||
from crawler.scenarios.fresh_session import FreshSessionScenario
|
||||
|
||||
flow_cfg = _load_active_flow()
|
||||
flow_cfg = _load_flow(cfg_id)
|
||||
target_url: str = flow_cfg.get("target_url") or "" if flow_cfg else ""
|
||||
t0 = time.monotonic()
|
||||
try:
|
||||
@@ -95,10 +100,10 @@ def run_fresh() -> None:
|
||||
_record("fresh", "fresh", result, None, t0)
|
||||
|
||||
|
||||
def run_batch(workers: int, total_runs: int, stagger_ms: int, headless: bool) -> None:
|
||||
def run_batch(workers: int, total_runs: int, stagger_ms: int, headless: bool, cfg_id: int | None = None) -> None:
|
||||
from crawler.batch import run_batch as _run_batch
|
||||
|
||||
flow_cfg = _load_active_flow()
|
||||
flow_cfg = _load_flow(cfg_id)
|
||||
if not flow_cfg:
|
||||
log.error("No active flow config — activate one in the admin panel first.")
|
||||
sys.exit(1)
|
||||
@@ -137,10 +142,13 @@ def main() -> None:
|
||||
|
||||
otp_p = sub.add_parser("otp", help="Run Scenario 1 (SMS-OTP login)")
|
||||
otp_p.add_argument("--phone", help="Single phone number (default: all from config)")
|
||||
otp_p.add_argument("--config-id", type=int, default=None, help="Flow config ID (default: first config)")
|
||||
|
||||
sub.add_parser("fresh", help="Run Scenario 2 (fresh session)")
|
||||
fresh_p = sub.add_parser("fresh", help="Run Scenario 2 (fresh session)")
|
||||
fresh_p.add_argument("--config-id", type=int, default=None, help="Flow config ID (default: first config)")
|
||||
|
||||
batch_p = sub.add_parser("batch", help="Run many parallel fresh-session runners")
|
||||
batch_p.add_argument("--config-id", type=int, default=None, help="Flow config ID (default: first config)")
|
||||
batch_p.add_argument("--workers", type=int, default=3, help="Parallel Chrome instances (default: 3)")
|
||||
batch_p.add_argument("--runs", type=int, default=10, help="Total runs to complete (default: 10)")
|
||||
batch_p.add_argument("--stagger", type=int, default=500, help="Ms delay between worker launches (default: 500)")
|
||||
@@ -156,15 +164,16 @@ def main() -> None:
|
||||
log.error("No phone numbers configured. Set PHONE_NUMBERS in .env or pass --phone")
|
||||
sys.exit(1)
|
||||
for phone in phones:
|
||||
run_otp(phone)
|
||||
run_otp(phone, cfg_id=args.config_id)
|
||||
elif args.cmd == "fresh":
|
||||
run_fresh()
|
||||
run_fresh(cfg_id=args.config_id)
|
||||
elif args.cmd == "batch":
|
||||
run_batch(
|
||||
workers=args.workers,
|
||||
total_runs=args.runs,
|
||||
stagger_ms=args.stagger,
|
||||
headless=args.headless,
|
||||
cfg_id=args.config_id,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user