feat: fpw plugins, validation/crawl perf, WS stats, test DB isolation
- Add Free_Proxy_Website-style fpw_* plugins and register them - Per-plugin crawl timeout (crawl_timeout_seconds=120); remove global crawl_timeout setting - Validator: fix connect vs total timeout on save; SOCKS session LRU cache; drop redundant semaphore - Validation handler uses single DB connection; batch upsert after crawl; WorkerPool put_nowait - Remove unused max_retries from settings API/UI; settings maintenance SQL + init_db cleanup of deprecated keys - WebSocket dashboard stats; ProxyList pool_filter and API alignment - POST /api/proxies/delete-one for IPv6-safe deletes; task poll stops on 404 - pytest uses PROXYPOOL_DB_PATH=db/proxies.test.sqlite so tests do not wipe production DB - .gitignore: explicit proxies.test.sqlite patterns; fix plugin_service ValidationException import Made-with: Cursor
This commit is contained in:
@@ -22,6 +22,7 @@ class ProxyRaw:
|
||||
@dataclass
|
||||
class Proxy:
|
||||
"""数据库中的代理实体"""
|
||||
|
||||
ip: str
|
||||
port: int
|
||||
protocol: str
|
||||
@@ -29,6 +30,7 @@ class Proxy:
|
||||
response_time_ms: Optional[float] = None
|
||||
last_check: Optional[datetime] = None
|
||||
created_at: Optional[datetime] = None
|
||||
validated: int = 0 # 0 待验证 1 已验证(可参与分数与对外取用)
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -46,7 +48,12 @@ class PluginInfo:
|
||||
|
||||
@dataclass
|
||||
class CrawlResult:
|
||||
"""插件爬取结果"""
|
||||
"""插件爬取结果
|
||||
|
||||
success_count: 最近一轮成功爬取到的代理条数(去重后),非「验证通过数」
|
||||
failure_count: 最近一轮是否爬取失败(健康检查/超时/异常为 1,否则为 0)
|
||||
"""
|
||||
|
||||
plugin_name: str
|
||||
proxies: List[ProxyRaw] = field(default_factory=list)
|
||||
success_count: int = 0
|
||||
|
||||
Reference in New Issue
Block a user