卡鲁阵列望远镜-望远镜状态客户端

katsdptelstate的Python项目详细描述


猫鼬科学数据处理器望远镜状态

这是一个客户端包,允许连接到 为科学数据处理器存储望远镜状态信息 猫鼬射电望远镜。这个数据库通俗地称为telstate

redis数据库充当键值存储。每个键都是一个sensor或 一个属性。传感器具有多个时间戳值,这些值组织为 有序集合。属性(或immutable键)只有一个值,没有 不允许更改的时间戳。

键是字符串,值是通过 MessagePack,它被扩展为支持元组、复数和 numpy数组。旧版本的数据库将这些值存储为pickle,并且 如果是这样的话,程序包会警告用户。密钥可以从 使用属性语法或dict语法的telstate对象。

可以通过两个后端之一访问数据库:redis客户端后端 允许通过网络(或 通过fakeredis模拟服务器)和简化的内存后端 独立访问。两个后端都支持加载和保存redis快照 以RDB转储文件的形式。

在同一个数据库上可以有多个视图(每个telstate一个 实例)。视图定义为前缀的列表,用作 组密钥。从数据库中读取时,每个前缀都在密钥前面 依次进行直到找到匹配项。当写入数据库时,第一个前缀 准备好了钥匙。因此,第一个前缀充当主前缀 命名空间,其余为补充只读命名空间。

警告

警告:应用有关python pickle的标准警告。从未 使用编码为的值从不受信任的telstate数据库检索数据 pickle,或通过不受信任的网络连接到这样的数据库。泡菜 通过在中设置katsdptelstate_allow_pickle=0,可以禁用支持 环境,它应该可以安全地连接到不受信任的telstates。 另一方面,可以对受信任的数据库禁用包警告 通过设置环境变量katsdptelstate_allow_pickle=1。

开始

测试katsdptelstate的最简单方法是使用内存中的后端。 如果你想运行一个真正的redis服务器,你需要安装redis(版本 2.8.9或更新版本)。例如,执行以下操作:

- macOS: ``brew install redis``
- Ubuntu: ``apt-get install redis-server``

然后pip install katsdptelstate运行本地redis-server。如果你 还要加载rdb文件,请执行pip install katsdptelstate[rdb]

一个简单的例子

importtimeimportkatsdptelstate# Connect to an actual Redis server via an endpoint or an URLtelstate=katsdptelstate.TelescopeState('localhost:6379')telstate=katsdptelstate.TelescopeState('redis://localhost')# Or use the in-memory backend (useful for testing)telstate=katsdptelstate.TelescopeState()# Load RDB file into Redis if katsdptelstate is installed with [rdb] optiontelstate.load_from_file('dump.rdb')# Attribute / dict style access returns the latest valuetelstate.add('n_chans',32768)print(telstate.n_chans)# -> 32768print(telstate['n_chans'])# -> 32768# List all keys (attributes and sensors)print(telstate.keys())# -> ['n_chans']# Sensors are timestamped underneathst=time.time()telstate.add('n_chans',4096)et=time.time()telstate.add('n_chans',16384)# Time ranges can be used and are really fasttelstate.get_range('n_chans',st=st,et=et)# -> [(4096, 1556112474.453495)]# Add an item 10 seconds backtelstate.add('n_chans',1024,ts=time.time()-10)# Attributes cannot be changed (only deleted)telstate.add('no_change',1234,immutable=True)# Adding it again is OK as long as the value doesn't changetelstate.add('no_change',1234,immutable=True)# Simpler notation for setting attributestelstate['no_change']=1234# Will raise katsdptelstate.ImmutableKeyErrortelstate['no_change']=456# Create a new view with namespace 'ns' and standard underscore separatorview=telstate.view('ns')# Insert a new attribute in this namespace and retrieve itview['x']=1print(view['x'])# -> 1print(view.prefixes)# -> ('ns_', '')print(view.keys())# -> ['n_chans', 'no_change', 'ns_x']

历史记录

0.8(2019-05-06)

  • 默认编码现在是msgpack;加载pickle时警告(75,79)
  • 默认后端现在在内存中(76)
  • 添加将内存后端转储到RDB文件的功能(77)
  • 从类似于RDB文件的对象和redis url(80,82)构造
  • 以字符串形式向用户报告键和前缀(73)
  • 添加ipython制表符完成(83)
  • RDB读写器清理(85,86)

0.7(2019-02-12)

  • 引入编码并添加msgpack编码作为pickle的替代(64,65)
  • 引入后端并添加内存后端以替代redis(71,72)
  • 通过设置项简化设置属性
  • 允许键在内部为字节,但允许指定为Unicode字符串(63)
  • github存储库现在也是公共的

0.6(2018-05-10)

  • katsdptelstate的初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
amazon web services Java AWS s3:如何使用Md5预签名url设置和上载内容   twitter使用java从推文中排除一些单词   如何在GUI java中添加延迟时间   java程序,如何使用Outputstream发送两次消息   java为什么是javax。在将Yasson与JSONB一起使用时,Glassfish中的json需要作为依赖项吗?   如何从dist文件夹中读取文件   java如何获取与模式匹配的文件列表   java如何使用Intent从Android应用程序发送彩信?   java限制对Spring的依赖,同时又不丧失框架的功能   java是否将捕获异常报告给Firebase/Fabric等?   用jdbcjava实现mysql分页   给定URI的java注释检索   java是序列化/反序列化公共枚举的简单方法?   java如何使用jMockit模拟本机方法