1

我有一个 Plone 网站,运行 ZEO、磅和 apache。有时,我返回了这个:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        <p>
            �ÿÍKoÛ0ïù   àØy÷²ìuS/,3VYrõH¿~ínÒ&#13;;thàÀDJúHF¯þµÆv{Ð](g"ðkQÊÜIn`Öbwk©¸÷X~+÷,êm5Îy®3n³fXÎñ#(rGbÄJ&#13;7¨=(ÓBVA)ÈÐs©Ü,4-÷Òh(-n¤    N=ÀÄEp'ý¼åS.n.:[¦Û`üe²6&amp;4CòÈVklÊ0odi*3Á÷kL0Ï]rMú£þ(é×/Fñ,&amp;ArýímrÒ¥±¸kSSI·Fõ²(©ÆäƤ1Bò+v8O{ÿõ   *iþíÃM&amp;㮬Ŭ0YPX1¢ÞHktD»¾ÎvÑöÌÏ0ß©uÌhô5/(ùÊ£e¤à{çÕ{ÏÄå/·â'9µÚ45+¹'Ó2Ö¬öÏãó¶1G;nvöça¯ ÛþdQ  í¨õ¡ôÕvSÐmëîî«ikÞþ0¦§ÅÙ%¬àJÛA   8;ß'µèÕTûÔ*Î0ß·í°}÷gî`CGAJÙT3Ç7¸ÐÙ'ôËJB¢97ÆÑëkôºã;:"èxW÷    ë°)vq²µâu
            ð×÷ïÆ}J¾Aîû÷g36Ô¹H:ÉÒh/"Og§sr·eí± ÏÓ¶kçrI'ÅòÙȤ¿h9}zgȸçéö#þæ~Ó52Áý`:fiBqçàÊÒi#¼_&gt;^)£1þ¤¸ù¬©¸)ö§1ê®^§÷Fx   
        </p>
    </body>
</html>

而不是正确的 HTML。

有什么线索吗?

4

1 回答 1

2

最终找到它的来源。

分析日志,我发现每次我有这种行为时,我都有一个ConflictError: database conflict error (oid 0x0545db, class Products.CMFPlone.QuickInstallerTool.QuickInstallerTool)

在这里查看完整的回溯

在调查了我在代码中使用 QuickInstallerTool 的位置后,我发现我在浏览器视图方法中使用了它:

def isMB(self):
    """ Sommes-nous dans une marque blanche ? """
    qi = getToolByName(self.context, 'portal_quickinstaller')
    prods = qi.listInstallableProducts(skipInstalled=False)

    for prod in prods:
        if (prod['id'] == 'theme.marqueBlanche') and (prod['status'] == 'installed'):
            return True

为了避免每次调用方法时计算,我已经像这样缓存它:

def cache_isMB(method,self,plonesite):
    return (plonesite, time() // (3600 * 3660))

@ram.cache(cache_isMB)
def isMB(self, plonesite):
    """ Sommes-nous dans une marque blanche ? """
    qi = getToolByName(self.context, 'portal_quickinstaller')
    prods = qi.listInstallableProducts(skipInstalled=False)

    for prod in prods:
        if (prod['id'] == 'theme.marqueBlanche') and (prod['status'] == 'installed'):
            return True

plonesite 参数是 Plone 实例的 id。

我没有弄清楚,为什么在列出所有可安装产品时会有一个文字?

于 2013-07-17T11:51:48.987 回答