Apama Pysys发动机接收改进过程启动

时间:2015-10-09 17:10:54

标签: python performance apama pysys

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

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

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

有人知道改善这种情况的方法吗?

很多thx

1 个答案:

答案 0 :(得分: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

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