1

我们正在使用 pysys 来测试 apama 并希望提高性能。阻碍我们的一件事是我们发出 7 个 engine_receive 来监控 7 个不同的通道到 7 个不同的文件中。

问题是启动这 7 个接收需要大约 10 秒。

我尝试使用 python 线程开始调用 pysys 并行中的接收方法,但在这种情况下没有任何反应。

有人知道改善这一点的方法吗?

很多谢谢

4

1 回答 1

0

我认为这里的问题是 engine_receive 的启动时间......即使你修改 CorrelatorHelper 类的接收方法不阻塞等待输出文件,它仍然需要大约 7 秒。

一种可能的方法是在所有 7 个通道上连接一个 engine_receive,记录到一个文件,但配置 engine_receive 以在输出文件中包含通道名称。如果对文件进行验证,您原则上至少可以在您的正则表达式中包含频道名称,例如使用 Apama 5.3

from pysys.constants import *
from pysys.basetest import BaseTest
from apama.common import XArgsHolder
from apama.correlator import CorrelatorHelper

    class PySysTest(BaseTest):
        def execute(self):
            correlator = CorrelatorHelper(self)
            correlator.start(logfile='correlator.log')
            correlator.receive('receive.log', channels=['channel1','channel2','channel3'], arguments=['-C'])
            correlator.injectMonitorscript('input.mon')
            self.wait(4.0)

        def validate(self):
            pass

与 input.mon 文件有;

monitor InputSender {

    action onload {
        on all wait(1.0) {
            emit "Sending to channel 1" to "channel1";
            emit "Sending to channel 2" to "channel2";
            emit "Sending to channel 3" to "channel3";
        }
    }
}

将在receive.log中有;

"channel1",Sending to channel 1
"channel2",Sending to channel 2
"channel3",Sending to channel 3
"channel1",Sending to channel 1
"channel2",Sending to channel 2
"channel3",Sending to channel 3
"channel1",Sending to channel 1
"channel2",Sending to channel 2
"channel3",Sending to channel 3
"channel1",Sending to channel 1
"channel2",Sending to channel 2
"channel3",Sending to channel 3

这可能会在某种程度上混淆所有验证,因此可能并不理想。您应该可以从另一个线程开始,如果您想继续发送,我有兴趣查看您的代码吗?

于 2015-10-13T14:32:46.937 回答