重新分配帮助程序包

redgrease的Python项目详细描述


红脂

简单的包,方便开发redisgears Python脚本。在

RedGreat包含以下内容:

  • 一个helper包redgrease.runtime,包含标准的redisears脚本函数(例如GearsBuilderGBatomicexecutelog等),但在开发过程中提供自动完成和类型提示,并且与实际运行时不冲突。在
  • 语法糖用于各种事物,如“magic”值和字符串,如不同的读取器名称(例如redgrease.Reader.CommandReader)、触发器模式(例如redgrease.TriggerMode.AsyncLocal)和日志级别(例如redgrease.LogLevel.Notice)。在
  • [WIP]一个简单的Redis客户机redgrease.client.Redis用python函数扩展,紧密地(1对1)映射到Redis Gears命令集(例如RG.PYEXECUTERG.GETRESULTRG.TRIGGERRG.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包加载默认的重分发符号(例如GearsBuilderGBatomicexecutelog等)。在

在开发期间,这将给你自动完成和类型提示 在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。在

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

推荐PyPI第三方库


热门话题
命令行参数的java ArrayIndexOutOfBoundsException   java令牌构造不正确   在emacs中更改javamode的缩进样式   如果FileInputStream未关闭,java应用程序将崩溃?   java在listview中显示图像:应用程序可能在其主线程上做了太多工作   Commons Lang中的java数值验证   Java小程序未在HTML中显示   Eclipse Java版本设置不正确   AWS JVM CPU限制上的java Docker   如何通过java graphics 2d将图片剪切成圆形?我希望结果与objectfit类似:css中的cover   java Strut2验证,覆盖css_xhtml主题   JMS发布者/订阅者模型中的java并发使用者   java无堆栈信息V(未知源)   java如何在JSON数组中拥有与JSON响应相同的顺序?