当我从lock.release库中使用fakeredis时,我得到了以下异常:
File "/usr/local/lib/python3.6/site-packages/redis/lock.py", line 111, in acquire
if self.do_acquire(token):
File "/usr/local/lib/python3.6/site-packages/redis/lock.py", line 258, in do_acquire
client=self.redis))
File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 2950, in __call__
return client.evalsha(self.sha, len(keys), *args)
File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 2079, in evalsha
return self.execute_command('EVALSHA', sha, numkeys, *keys_and_args)
File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 667, in execute_command
connection.send_command(*args)
File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 610, in send_command
self.send_packed_command(self.pack_command(*args))
File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 590, in send_packed_command
self._sock.sendall(item)
File "/usr/local/lib/python3.6/site-packages/fakeredis/_server.py", line 808, in sendall
self._parser.send(data)
File "/usr/local/lib/python3.6/site-packages/fakeredis/_server.py", line 725, in _parse_commands
self._process_command(fields)
File "/usr/local/lib/python3.6/site-packages/fakeredis/_server.py", line 827, in _process_command
result = self._run_command(func, sig, fields[1:], False)
File "/usr/local/lib/python3.6/site-packages/fakeredis/_server.py", line 741, in _run_command
result = func(*args)
File "/usr/local/lib/python3.6/site-packages/fakeredis/_server.py", line 2439, in evalsha
return self.eval(script, numkeys, *keys_and_args)
File "/usr/local/lib/python3.6/site-packages/fakeredis/_server.py", line 2386, in eval
from lupa import LuaRuntime, LuaError, as_attrgetter
No module named 'lupa'我没有找到类似的问题(到目前为止),所以我只想告诉那些将来会面临这个例外的人的解决方案。
发布于 2020-06-10 18:12:43
正如文档中提到的,
尽管fakeredis是纯Python,但是如果您想要运行Lua脚本,则需要
lupa(这包括像redis.lock.Lock这样的特性,这些特性是用Lua实现的)。如果您用fakeredis安装pip install fakeredis[lua],它将自动安装。
So:
pip install fakeredis[lua]https://stackoverflow.com/questions/62310326
复制相似问题