我们正在使用pysys测试apama并希望提高性能。阻碍我们的一件事是我们发出7个engine_receive来监控7个不同的通道到7个不同的文件。
问题是启动这7次接收需要大约10秒钟。
我尝试使用python线程开始在pysys parallel中调用receive方法,但在这种情况下没有任何反应。
有人知道改善这种情况的方法吗?
很多thx
答案 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
这可能会在一定程度上混淆所有验证,因此可能并不理想。你应该能够从另一个线程开始,如果你想发送,我有兴趣看看你的代码吗?