1# @Language: Markdown
2# @Software: VS Code/MacDown/Typora/Vim
3# @Author  : Di Wang
4# @Email   : [email protected]

See epics examples

用于Channel Finder. 也就是把ioc中的record信息, epics environment以及info tag发送到一个数据库.

但目前整个服务显得很繁杂, 要先开启Elasticsearch, 然后开启Channel Finder Service, 然后开启recsync中的server, 也叫RecCeiver, (这个名字很糟糕, 因为它其实是一个中间服务, 负责接受ioc发过来的内容, 然后发给Channel Finder Service), 最后开启带有recsync中的client功能(RecCaster)的ioc. client使用5049UDP端口.

server会调用pyCFClient module, 创建Python class ChannelFinderClient, 与Channel Finder Service通信, 通信时使用了默认的8080端口.

可以使用https://github.com/ChannelFinder/RecSync-env来简化部署.

以下为测试recsync的流程, 不涉及Channel Finder Service.

RecCaster

在ioc中添加reccaster依赖,

1test_DBD += reccaster.dbd
2test_LIBS += reccaster

在st.cmd中, 可以配置RecCaster

 1var(reccastTimeout, 5.0)
 2var(reccastMaxHoldoff, 5.0)
 3epicsEnvSet("CONTACT", "mycontact")
 4epicsEnvSet("BUILDING", "mybuilding")
 5epicsEnvSet("SECTOR", "mysector")
 6
 7addReccasterEnvVars("CONTACT", "SECTOR")
 8addReccasterEnvVars("BUILDING")
 9
10iocInit

RecCeiver

开启RecCeiver的流程

 1$ cd recsync/server
 2$ python3 -m venv venv
 3$ source venv/bin/activate
 4$ pip3 install --upgrade pip
 5$ pip3 install requests
 6$ pip3 install .
 7$ pip3 list
 8Package            Version
 9------------------ --------
10attrs              23.2.0
11Automat            22.10.0
12certifi            2024.2.2
13channelfinder      3.0.0
14charset-normalizer 3.3.2
15constantly         23.10.4
16hyperlink          21.0.0
17idna               3.7
18incremental        22.10.0
19pip                24.0
20recceiver          1.5
21requests           2.31.0
22setuptools         66.1.1
23simplejson         3.19.2
24six                1.16.0
25Twisted            24.3.0
26typing_extensions  4.11.0
27urllib3            2.2.1
28zope.interface     6.3
29# 或者直接指定PYTHONPATH
30$ export PYTHONPATH=${PWD}:${PWD}/build/lib:${channelfinder_path}
31$ twistd -r poll -n recceiver -f demo.conf