SiddhiQL中的语法错误,无关输入(PySiddhi4)

时间:2018-06-29 12:49:24

标签: python python-3.x siddhi pyjnius

我正在尝试使用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>, ';'}.

我尝试使用查询字符串中的空格,但无济于事。有谁能解决这个问题?提前非常感谢!

1 个答案:

答案 0 :(得分:0)

PySiddhi4基本上是Java Siddhi CEP的包装。在那里,我们使用pyjnius [1]模块使用JNI将Java类作为Python类进行访问。但是,似乎存在pyjnius的此字符串编码问题[2],[3],并且引起了上述问题。

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

  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