You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用opcua-asyncio为OPC UA服务器创建缓存文件(树莓派适用)

为opcua-asyncio服务器创建缓存文件的最简方案

针对你的需求,opcua-asyncio的缓存功能核心是避免每次启动服务器时重复解析XML节点集文件,以此提升树莓派上的启动速度和运行性能。以下是可行的最简实现步骤:

1. 生成缓存文件

在服务器完成初始化并导入所有XML节点集后,调用export_cache方法将节点数据写入缓存文件。修改你的代码如下:

import asyncio
import logging
import sys
from asyncua.common.ua_utils import value_to_datavalue

sys.path.insert(0, "..")
from asyncua import Server

async def main():
    logging.basicConfig(level=logging.INFO)
    server = Server()

    await server.init()
    server.set_endpoint("opc.tcp://localhost:4140")

    # 导入所有XML节点集
    await server.import_xml("Opc.Ua.Di.Nodeset2.xml")
    await server.import_xml("Opc.Ua.Machinery.Nodeset2.xml")
    await server.import_xml("Opc.Ua.Pumps.Nodeset2.xml")
    await server.import_xml("custom.Nodeset.xml")

    # 生成缓存文件(只需运行一次)
    await server.export_cache("server_cache.pickle")
    logging.info("缓存文件已生成")

    # 启动服务器(生成缓存后可注释此段,后续直接加载缓存)
    async with server:
        while True:
            await asyncio.sleep(1)

if __name__ == "__main__":
    asyncio.run(main())

运行这段代码一次,程序会在当前目录下生成server_cache.pickle缓存文件。

2. 加载缓存文件

缓存生成后,后续启动服务器时无需再导入XML节点集,直接加载缓存即可,修改代码如下:

import asyncio
import logging
import sys
from asyncua.common.ua_utils import value_to_datavalue

sys.path.insert(0, "..")
from asyncua import Server

async def main():
    logging.basicConfig(level=logging.INFO)
    server = Server()

    await server.init()
    server.set_endpoint("opc.tcp://localhost:4140")

    # 直接加载缓存文件,替代XML导入步骤
    await server.import_cache("server_cache.pickle")
    logging.info("缓存文件已加载")

    # 启动服务器
    async with server:
        while True:
            await asyncio.sleep(1)

if __name__ == "__main__":
    asyncio.run(main())

关键注意事项

  • 缓存文件基于pickle序列化,仅适配相同版本的opcua-asyncio和Python环境,若依赖版本变更,需重新生成缓存。
  • 树莓派运行时,确保缓存文件所在目录有读写权限,避免因权限问题导致缓存生成或加载失败。
  • 若后续修改了XML节点集文件,必须重新生成缓存,否则服务器会使用旧的节点数据。

内容的提问来源于stack exchange,提问作者Ankit Mavani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:42:22