使用org.redisson.api.RScript 如何在lua脚本中进行阻塞等待

问题遇到的现象和发生背景

使用org.redisson.api.RScript 如何在lua脚本中进行阻塞等待
如果不进行阻塞 会造成服务cpu超限 并且会给redis集群带来很大压力

遇到的现象和发生背景,请写出第一个错误信息

类似实现RateLimiter的acquire 需要阻塞等待下

用代码块功能插入代码,请勿粘贴截图
String script = LuaScript.getTokenBucketRateLimiterScript();
        List results = rScript.eval(RScript.Mode.READ_WRITE, script, RScript.ReturnType.MULTI, keys, rule.getRate(), rule.getBucketCapacity(), rule.getRequestedTokens());

script部分脚本

local requested = tonumber(ARGV[3])
local now = redis.call('TIME')[1]
local delta = math.max(0, now-last_refreshed)
local filled_tokens = math.min(capacity, last_tokens+(delta*rate))
local allowed = filled_tokens >= requested
while(not(allowed))
do
   now = redis.call('TIME')[1]
   delta = math.max(0, now-last_refreshed)
   filled_tokens = math.min(capacity, last_tokens+(delta*rate))
   allowed = filled_tokens >= requested
end
运行结果及详细报错内容

运行结果ok

我的解答思路和尝试过的方法

尝试在while中添加 os.execute("sleep " .. 1)
while(not(allowed))
do
os.execute("sleep " .. 1)
now = redis.call('TIME')[1]
delta = math.max(0, now-last_refreshed)
filled_tokens = math.min(capacity, last_tokens+(delta*rate))
allowed = filled_tokens >= requested
end

但发生了报错
ERR Error running script (call to f_005cecb2922feef769db26c02a1a73b5ed10082f): @enable_strict_lua:15: user_script:23: Script attempted to access nonexistent global variable 'os'.

请问下该如何解决呢

在 Redis Lua 脚本中,os 函数不可用。因此,无法使用 os.execute 来暂停脚本的执行。为了避免这种情况,可以使用 redis.call('sleep', time) 来替代。请更改如下:

while(not(allowed))
do
redis.call('sleep', 1)
now = redis.call('TIME')[1]
delta = math.max(0, now-last_refreshed)
filled_tokens = math.min(capacity, last_tokens+(delta*rate))
allowed = filled_tokens >= requested
end