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