fix click

This commit is contained in:
Yuriy Yuriev
2026-06-05 20:56:26 +07:00
parent e438f09693
commit f262616aad
3 changed files with 124 additions and 32 deletions
+26 -17
View File
@@ -51,59 +51,68 @@ class VisitScheduler:
async def run(self) -> dict:
"""
Run scheduled visits.
Returns:
Statistics dict
"""
total_reading_time = 0
loop = asyncio.get_event_loop()
try:
while True:
if self.max_visits and self.visit_count >= self.max_visits:
logger.info(f"Visit limit reached: {self.max_visits}")
break
# Randomize parameters
# Randomize parameters once per cycle
current_reading = random.randint(self.min_reading, self.max_reading)
current_delay = random.randint(self.min_delay, self.max_delay)
self.visit_count += 1
# Record start time so the next visit fires strictly on the timer
tick_start = loop.time()
logger.info(
f"Visit {self.visit_count}/{'' if not self.max_visits else self.max_visits}: "
f"reading={current_reading}s"
f"reading={current_reading}s delay={current_delay}s"
)
# Visit page
result = await self.browser_service.visit_page(
self.url, current_reading
)
if result.success:
self.successful += 1
total_reading_time += current_reading
else:
self.failed += 1
# Notify about visit completion
if self.on_visit_complete:
await self.on_visit_complete(
self.visit_count, result, current_delay, current_reading
)
if self.max_visits and self.visit_count >= self.max_visits:
break
# Wait before next visit
# Wait only the remaining time so that the period between visit
# starts is exactly current_delay (independent of visit duration)
elapsed = loop.time() - tick_start
remaining = current_delay - elapsed
if self.on_progress:
await self.on_progress(self.visit_count, current_delay)
await asyncio.sleep(current_delay)
if remaining > 0:
await asyncio.sleep(remaining)
except asyncio.CancelledError:
logger.info("Visit scheduler cancelled")
raise
return {
"total_visits": self.visit_count,
"successful": self.successful,