使用Plone 4和pas.plugins.sqlalchemy与许多用户

Rig*_*ala 4 mysql sql sqlalchemy zope plone

我一直在使用pas.plugins.sqlalchemy为MySQL提供身份验证和成员数据存储的RDBMS后端.身份验证工作完美,成员数据在RDBMS上正确存储和恢复.目前的用户超过20.000

但是,用户枚举需要很长时间.我已经检查了Plone控制面板/用户和组部分中的" 许多用户 ",但即使是简单的用户搜索也需要几乎无限的时间.通过调试plugin.py脚本,我注意到enumerateUsers()被调用的次数与存储的用户数一样多; 因此,完成简单搜索请求需要大量的CPU时间,因为查询与每个用户名匹配,一次一个用户,一次一个查询.

我在这里错过了什么吗?是不是pas.plugins.sqlalchemy有用,特别是当你有一个非常大的用户?目前,我在我的*acl_users/plugins/User Enumeration*设置中将sql插件作为最高优先级.我应该改变吗?

Aus*_*pex 5

我几乎继承了维护pas.plugins.sqlalchemy - 但我还没有亲自将它用于少数几个用户.如果你在https://github.com/auspex/pas.plugins.sqlalchemy/issues上提交了一个错误,我会看到我能做些什么.

我认为它不会对枚举发生的顺序产生太大影响 - 它仍然必须枚举SQL db中的所有用户.所以它要么在ZODB之前发现,要么在之后发现.这听起来好像问题Zope的开始-调用enumerateUsers()每一次用户似乎过高-但即便如此,它不应该是必要的,使每枚举关系数据库的请求.

  • 我猜这在Plone 4中有所改变,因为用户和组控制面板现在试图显示每个用户的全名...这需要一个属性查找来触发额外的enumerateUsers调用. (3认同)