pycasbin的Redis watcher适配器
项目描述
pycasbin redis watcher
Casbin角色监视器,用于监视Casbin策略的更新
安装
pip install pycasbin-redis-watcher
基本用法
示例使用 https://github.com/ScienceLogic/pycasbin/flask-authz
from flask_authz import CasbinEnforcer
from casbin_redis_watcher import RedisWatcher
casbin_enforcer = CasbinEnforcer(app, adapter)
watcher=RedisWatcher(redis_hostname, redis_port)
watcher.set_update_callback(casbin_enforcer.e.load_policy)
casbin_enforcer.set_watcher(watcher)
与UWSGI一起使用
此redis-watcher模块启动单独的进程,这些进程订阅Redis通道,并监听该通道上的Casbin策略更新。当在WSGI上下文(如uwsgi)中运行时,您可能希望将这些进程作为postfork操作启动。如下所示
try:
from uwsgidecorators import postfork
print("Running in uwsgi context")
except ModuleNotFoundError:
print("Not running in uwsgi context")
postfork = None
if postfork:
@postfork
def load_watcher():
global casbin_enforcer
watcher = RedisWatcher(redis_info.hostname, redis_info.port)
watcher.set_update_callback(casbin_enforcer.e.load_policy)
casbin_enforcer.set_watcher(watcher)