除了使用PyDataLog的常规方法之外,在CherryPy中还有其他使用PyDataLog的方法吗?

时间:2018-12-07 06:45:25

标签: python cherrypy pydatalog

下面在500 internal server error页上出现了这样的错误。

File "/usr/local/lib/python3.5/dist-packages/pyDatalog/pyParser.py", line 388, in __call__
    literal = Literal.make(self._pyD_name, tuple(args), kwargs)
  File "/usr/local/lib/python3.5/dist-packages/pyDatalog/pyParser.py", line 510, in make
    return precalculations & Query(predicate_name, terms, kwargs, prearity, aggregate)
  File "/usr/local/lib/python3.5/dist-packages/pyDatalog/pyParser.py", line 574, in __init__
    Literal.__init__(self, predicate_name, terms, kwargs, prearity, aggregate)
  File "/usr/local/lib/python3.5/dist-packages/pyDatalog/pyParser.py", line 500, in __init__
    self.lua = pyEngine.Literal(self.predicate_name, tbl, self.prearity, aggregate)
  File "pyDatalog\pyEngine.py", line 402, in pyDatalog.pyEngine.Literal.__init__ (pyDatalog/pyEngine.c:15254)
  File "pyDatalog\pyEngine.py", line 333, in pyDatalog.pyEngine.Pred.__new__ (pyDatalog/pyEngine.c:13917)
  File "pyDatalog\pyEngine.py", line 334, in pyDatalog.pyEngine.Pred.__new__ (pyDatalog/pyEngine.c:13431)
AttributeError: '_thread._local' object has no attribute 'logic'

如何访问PyDataLog变量

1 个答案:

答案 0 :(得分:0)

我在Thread safety and multi-models部分中找到了答案here。如果它可以帮助其他任何人面对我所面对的问题。

Python程序可能会启动多个线程。每个线程都应具有以下语句来初始化pyDatalog:

from pyDatalog import pyDatalog, Logic
Logic() # initializes the pyDatalog engine