重新分配帮助程序包
redgrease的Python项目详细描述
红脂
简单的包,方便开发redisgears Python脚本。在
RedGreat包含以下内容:
- 一个helper包
redgrease.runtime
,包含标准的redisears脚本函数(例如GearsBuilder
,GB
,atomic
,execute
,log
等),但在开发过程中提供自动完成和类型提示,并且与实际运行时不冲突。在 - 语法糖用于各种事物,如“magic”值和字符串,如不同的读取器名称(例如
redgrease.Reader.CommandReader
)、触发器模式(例如redgrease.TriggerMode.AsyncLocal
)和日志级别(例如redgrease.LogLevel.Notice
)。在 - [WIP]一个简单的Redis客户机
redgrease.client.Redis
用python函数扩展,紧密地(1对1)映射到Redis Gears命令集(例如RG.PYEXECUTE
,RG.GETRESULT
,RG.TRIGGER
,RG.DUMPREGISTRATIONS
等) - ^{str1}$[Comming Later]一个远程GearsBuilder,受官方redisgears-py客户端的启发,但有一些不同。在
- ^{/str}其他有用的函数。建议得到认可。在
请注意,redgreat包主要用于帮助Gears脚本的开发,即使它没有安装在redisgears运行时环境中,它也会很有用,尽管它可能是最方便的方法。在
还有一个[soon]一个'watcher'脚本/Docker容器提供了一种简单形式的Redis Gears脚本的“热重新加载”,方法是不断监视包含Redis Gears脚本的目录,并在检测到修改时自动在Redis Gear实例上“pyexecute”。 其目的主要是通过提供一种形式的热重新加载功能来简化“触发器样式”齿轮脚本的开发。在
安装
开发环境
在开发Gears脚本的环境中,只需像往常一样使用pip3安装“redgile”:
python3 -m pip install redgrease
Redis Gears运行时环境
redgire包不需要安装在redisgears Python运行时环境中,这样就可以运行只使用标准命令的传统Gears脚本,即使redgreat用于开发也是如此。在
如果您从脚本中删除redgreat import子句,或者按照“稍微更高级的用法”一节中的说明将其包装在一个检查中,这样的脚本在Redis Gears环境中没有redgreat仍然可以正常运行。在
但是,在redisgears服务器上安装redgrease
包,并在脚本中保留redgreat导入子句也是非常安全的。可能更方便。在
在这种情况下,您只需按照常规方式加载带有“redgreat”的脚本:
^{pr2}$另一种方法是使用redgreat watcher或loader来自动加载脚本以及普通'要求.txt'文件,如所示here
使用
基础开发
您可以从redgrease.runtime
包加载默认的重分发符号(例如GearsBuilder
、GB
、atomic
、execute
、log
等)。在
在开发期间,这将给你自动完成和类型提示
在redisgears Python运行时中,所有的redgrease.runtime
都直接映射到普通的,没有副作用。在
from redgrease.runtime import GearsBuilder, log, atomic, execute
这将在您的IDE中为Redis Gears实现自动完成。Redis Gears简介示例:
redgreat的runtime
包将检测它何时在实际的rediseares Python运行时环境中导入,然后加载默认的redis gears符号,避免与内置的redis gears Python环境冲突。
如果它是在Redis Gears Python运行时环境(即开发环境)之外加载的,redgrease.runtime
包将使用合适的(希望是)doc字符串和类型提示来加载占位符符号,以便于开发。在
可以使用*
加载所有符号,但通常不建议这样做冰。在
示例
下面是一个前任
from redgrease.runtime import GearsBuilder, execute
def age(x):
''' Extracts the age from a person's record '''
return int(x['value']['age'])
def cas(x):
''' Checks and sets the current maximum '''
k = 'age:maximum'
v = execute('GET', k) # read key's current value
v = int(v) if v else 0 # initialize to 0 if None
if x > v: # if a new maximum found
execute('SET', k, x) # set key to new value
# Event handling function registration
gb = GearsBuilder()
gb.map(age)
gb.foreach(cas)
gb.register('person:*')
稍微更高级的用法
如果您不想在Redis Gears Python运行时环境中使用redgreat包,只需按如下方式有条件地加载它:
try:
from redgrease.runtime import GearsBuilder, execute
except ModuleNotFoundError:
pass
然后,在开发过程中,您将可以访问所有的自动完成和类型hin等,但不必在redisgears Python运行时环境中安装redgreat。在
- 项目
标签: