|
@@ -79,11 +79,12 @@ db:
|
|
|
modbus:
|
|
modbus:
|
|
|
host: 0.0.0.0
|
|
host: 0.0.0.0
|
|
|
port: 502
|
|
port: 502
|
|
|
- interval: 5
|
|
|
|
|
|
|
|
|
|
http_provider:
|
|
http_provider:
|
|
|
url: http://192.168.1.109:18503/data/get_points_real_value
|
|
url: http://192.168.1.109:18503/data/get_points_real_value
|
|
|
timeout_seconds: 5
|
|
timeout_seconds: 5
|
|
|
|
|
+ interval: 5
|
|
|
|
|
+ batch_size: 200
|
|
|
|
|
|
|
|
logging:
|
|
logging:
|
|
|
dir: logs
|
|
dir: logs
|
|
@@ -456,12 +457,13 @@ logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
class ValueRefreshWorker(threading.Thread):
|
|
class ValueRefreshWorker(threading.Thread):
|
|
|
- def __init__(self, points, provider, store, interval_seconds: int):
|
|
|
|
|
|
|
+ def __init__(self, points, provider, store, interval_seconds: int, batch_size: int):
|
|
|
super().__init__(name="value-refresh-worker", daemon=True)
|
|
super().__init__(name="value-refresh-worker", daemon=True)
|
|
|
self.points = points
|
|
self.points = points
|
|
|
self.provider = provider
|
|
self.provider = provider
|
|
|
self.store = store
|
|
self.store = store
|
|
|
self.interval_seconds = interval_seconds
|
|
self.interval_seconds = interval_seconds
|
|
|
|
|
+ self.batch_size = batch_size
|
|
|
|
|
|
|
|
def run(self) -> None:
|
|
def run(self) -> None:
|
|
|
logger.info("实时值刷新线程已启动,刷新周期=%s秒", self.interval_seconds)
|
|
logger.info("实时值刷新线程已启动,刷新周期=%s秒", self.interval_seconds)
|
|
@@ -475,8 +477,8 @@ class ValueRefreshWorker(threading.Thread):
|
|
|
def refresh_once(self, initial: bool) -> None:
|
|
def refresh_once(self, initial: bool) -> None:
|
|
|
point_by_id = {point.point_id: point for point in self.points}
|
|
point_by_id = {point.point_id: point for point in self.points}
|
|
|
point_ids = list(point_by_id)
|
|
point_ids = list(point_by_id)
|
|
|
- for start in range(0, len(point_ids), DEFAULT_BATCH_SIZE):
|
|
|
|
|
- batch = point_ids[start:start + DEFAULT_BATCH_SIZE]
|
|
|
|
|
|
|
+ for start in range(0, len(point_ids), self.batch_size):
|
|
|
|
|
+ batch = point_ids[start:start + self.batch_size]
|
|
|
values = self.provider.fetch_values(batch)
|
|
values = self.provider.fetch_values(batch)
|
|
|
for point_id in batch:
|
|
for point_id in batch:
|
|
|
point = point_by_id[point_id]
|
|
point = point_by_id[point_id]
|
|
@@ -558,7 +560,7 @@ def setup_logging(log_dir: str, retention_days: int, level: str) -> None:
|
|
|
正在启动Modbus Server
|
|
正在启动Modbus Server
|
|
|
日志系统初始化完成
|
|
日志系统初始化完成
|
|
|
配置文件加载完成
|
|
配置文件加载完成
|
|
|
-运行配置: 数据库=host:port/database, Modbus监听=host:port, 刷新周期=5秒, 批量大小=200
|
|
|
|
|
|
|
+运行配置: 数据库=host:port/database, Modbus监听=host:port, HTTP刷新周期=5秒, HTTP批量大小=200
|
|
|
数据库连接成功
|
|
数据库连接成功
|
|
|
开始从modbus_server_point加载全部点位
|
|
开始从modbus_server_point加载全部点位
|
|
|
点位加载完成,数量=...
|
|
点位加载完成,数量=...
|
|
@@ -592,14 +594,14 @@ def main() -> int:
|
|
|
logger.info("日志系统初始化完成")
|
|
logger.info("日志系统初始化完成")
|
|
|
logger.info("配置文件加载完成")
|
|
logger.info("配置文件加载完成")
|
|
|
logger.info(
|
|
logger.info(
|
|
|
- "运行配置: 数据库=%s:%s/%s, Modbus监听=%s:%s, 刷新周期=%s秒, 批量大小=%s",
|
|
|
|
|
|
|
+ "运行配置: 数据库=%s:%s/%s, Modbus监听=%s:%s, HTTP刷新周期=%s秒, HTTP批量大小=%s",
|
|
|
config.db.host,
|
|
config.db.host,
|
|
|
config.db.port,
|
|
config.db.port,
|
|
|
config.db.database,
|
|
config.db.database,
|
|
|
config.modbus.host,
|
|
config.modbus.host,
|
|
|
config.modbus.port,
|
|
config.modbus.port,
|
|
|
- config.modbus.interval,
|
|
|
|
|
- DEFAULT_BATCH_SIZE,
|
|
|
|
|
|
|
+ config.http_provider.interval,
|
|
|
|
|
+ config.http_provider.batch_size,
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
conn = create_connection(config.db)
|
|
conn = create_connection(config.db)
|
|
@@ -642,7 +644,8 @@ def main() -> int:
|
|
|
points,
|
|
points,
|
|
|
provider,
|
|
provider,
|
|
|
store,
|
|
store,
|
|
|
- config.modbus.interval,
|
|
|
|
|
|
|
+ config.http_provider.interval,
|
|
|
|
|
+ config.http_provider.batch_size,
|
|
|
)
|
|
)
|
|
|
logger.info("开始请求初始化实时值")
|
|
logger.info("开始请求初始化实时值")
|
|
|
worker.refresh_once(initial=True)
|
|
worker.refresh_once(initial=True)
|