从c#调用tap_example.py来获取Membase TAP流
本文关键字:获取 Membase TAP py example 调用 tap | 更新日期: 2023-09-27 18:14:53
我试图使用动态语言run time/IronPython来简单地运行一个带有命令参数的.py脚本,然后获得std输出。这是为了执行在c#中尚未实现的membase TAP协议:
public class MembaseTap
{
public void Tap()
{
var pyEngine = Python.CreateEngine();
pyEngine.ExecuteFile(@"E:'Program Files'Membase'Server'bin'tap_example.py");
}
}
我相信我能够使用ExecuteFile来运行脚本,但我不知道在这种情况下如何传递参数。
本质上,如果我从命令行运行命令,它将是:
python tap_example.py localhost:11210
我可以简单地从c#运行它,但这需要安装Python。这是一个备选方案,但我更喜欢使用DLR。
有什么建议吗?
你可以在创建引擎时传递参数,如Jeff Hardy在StackOverflow上的脚本参数和嵌入式IronPython帖子中的回答所示。你的c#代码看起来像这样:
public class MembaseTap
{
public void Tap()
{
var options = new Dictionary<string, object>();
options["Arguments"] = new [] { "foo", "bar" };
var pyEngine = Python.CreateEngine(options);
pyEngine.ExecuteFile(@"E:'Program Files'Membase'Server'bin'tap_example.py");
}
}
要重定向标准输出,您可以使用pyEngine.Runtime.IO对象上的方法,如如何在c#中重定向ironpython的标准输出?