RedisGears函数运行时¶
Python RedisGears函数是使用嵌入式Python解释器运行的。每个函数使用一个单独的子解释器。所有函数共享相同的环境和依赖项。导入环境时带有几个默认值。
以下部分描述运行时环境。
Python解释器¶
RedisGears嵌入了一个Python版本3.7.2+解释器。
所有函数都使用这个解释器。每次调用RG。PYEXECUTE
维护自己的全局字典,将其执行上下文与其他调用隔离开来。这意味着在给定调用中提交的所有函数共享相同的解释器和globals字典。
环境¶
解释器的环境可以用任何依赖包来扩展,这些依赖包以后可以被各自的子解释器中的函数导入和使用。
GearsBuilder¶
的GearsBuilder
类在默认情况下导入到运行时环境。
它公开了函数的功能上下文建设者.
执行¶
的execute ()
函数默认被导入到运行时环境中。
这个函数执行一个任意的Redis命令。
Python API
def执行(命令,*arg游戏)
参数
- 命令:要执行的命令
- arg游戏:命令的参数
例子
# ping服务器(回复应该是'PONG')回复=执行(“萍”)
原子¶
的原子()
Python上下文默认被导入到运行时环境中。
上下文通过阻塞主Redis进程来确保它中的所有操作都被原子地执行。
Python API
类原子()
例子
#自动增加两个键def事务(_):与原子():执行(“增加”,f'{{{标签()}}}: foo”)执行(“增加”,f'{{{标签()}}}:酒吧)gb=GB(“ShardsIDReader”)gb.foreach(事务)gb.运行()
configGet¶
的configGet ()
函数默认被导入到运行时环境中。
这个函数获取RedisGears的当前值配置选择。
Python API
defconfigGet(关键)
参数
- 关键:配置选项键
例子
获取“ProfileExecutions”的当前值喷火=configGet(“ProfileExecutions”)
gearsConfigGet¶
的gearsConfigGet ()
函数默认被导入到运行时环境中。
这个函数获取RedisGears的当前值配置选项,如果该键不存在,则返回默认值。
Python API
defgearsConfigGet(关键,默认的=没有一个)
参数
- 关键:配置选项键
- 默认的:默认值
例子
#获取'foo'配置选项键,默认为'bar'喷火=gearsConfigGet(“foo”,默认的=“酒吧”)
标签¶
的标签()
函数默认被导入到运行时环境中。
该函数返回一个hashtag,该hashtag映射到本地引擎的分片提供的最低散列槽。换句话说,它可以作为一个标签用于在集群中进行分区。
Python API
def标签()
例子
#获取碎片的标签ht=标签()
日志¶
的日志()
函数默认被导入到运行时环境中。
这个函数打印一条消息到Redis的日志。
Python API
def日志(消息,水平=“通知”)
参数
- 消息:要输出的消息
- 水平:消息的日志级别可以是以下级别之一:
- “调试”
- “详细”
- “通知”
- “警告”
例子
#将DB中的所有数据转储到日志中,用于“调试”GB().foreach(λx:日志(str(x),水平=“调试”)).运行()
gearsFuture¶
的gearsFuture ()
函数默认被导入到运行时环境中。
这个函数返回gearsFuture
对象,它允许另一个线程/进程处理该记录。从一个步骤的操作返回这个对象告诉RedisGears暂停执行,直到后台处理完成/失败。
的gearsFuture
对象提供两种控制方法:continueRun ()
和continueFailed ()
.这两个方法都是线程安全的,可以在任何时候调用,以表示后台处理已经完成。continueRun
信号成功,它的参数是主进程的记录。continueFailed
向主进程报告失败,其参数是描述失败的字符串。
调用gearsFuture ()
仅支持以下操作:*地图
*flatmap
*过滤器
*foreach
*总
*aggregateby
试图创造一个gearsFuture
对象将导致异常。
例子
进口时间阻塞={}阻塞客户端直到密钥过期def块(r):f=gearsFuture()关键=r[1]如果关键不在阻塞.键():阻塞[关键]=[]阻塞[关键].附加(f)返回fdef疏通(r):res=0关键=r[“关键”]期货=阻塞.流行(关键,没有一个)如果期货:res=len([f.continueRun('% s过期的%关键)为f在期货])阻塞[关键]返回resGB(“CommandReader”).地图(块).注册(触发=“WaitForKeyExpiration”,模式=“同步”)GB().地图(疏通).注册(eventTypes=[“过期”],模式=“同步”)
gearsFuture与Python Async Await¶
gearsFuture
也与Python的async/await语法无缝集成,所以可以做到以下几点:
进口asyncio异步defc(r):等待asyncio.睡眠(1)返回rGB(“ShardsIDReader”).地图(c).运行()