0

我正在尝试使用 PySiddhi4 在基于 Python 的环境中运行 CEP。为了熟悉这个包,我尝试运行 Siddhi 开发人员提供的示例代码。这是链接:https ://wso2.github.io/PySiddhi/Run-PySiddhi4/

但是,当我运行代码时,在实例化 siddhiAppRuntime 时出现 JavaException 错误。siddhiApp 查询字符串如下:

siddhiApp = "define stream cseEventStream (symbol string, price float, volume long); " + \
"@info(name = 'query1') from cseEventStream[volume < 150] select symbol,price insert into outputStream;"

我得到以下错误描述:

JVM exception occurred: Error between @ Line: 1. Position: 0 and @ Line: 1. Position: 1. Syntax error in SiddhiQL, extraneous input 'iddhiAp' expecting {<EOF>, ';'}.

我试图玩弄查询字符串中的间距,但无济于事。有没有人有这个问题的解决方案?提前非常感谢!

4

1 回答 1

0

PySiddhi4 基本上是 Java Siddhi CEP 的包装器。在那里,我们使用 pyjnius [1] 模块将 Java 类作为使用 JNI 的 Python 类来访问。但是,似乎有这个字符串编码问题 [2],[3] 与 pyjnius(的发布版本)一起报告,这导致了上述问题。

因此,根据他们的说法,解决方法是;

  1. 使用 cython<0.2.7 构建 pyjnius 1.1.1 (pip install cython==0.26)
  2. 从 GitHub 克隆最新版本的 pyjnius,该版本已修复错误但尚未发布。

请试试看。如果解决方法似乎不起作用,请告诉我们,然后我们可以尝试在 PySiddhi 本身上修复它。

[1] https://github.com/kivy/pyjnius

[2] https://github.com/kivy/pyjnius/issues/300

[3] https://github.com/kivy/pyjnius/issues/340

于 2018-07-11T14:13:16.563 回答