Azure函数调用二进制可执行文件,将标准输出流式传输到响应(例如child_process).Spawn为node.j

本文关键字:process child 例如 Spawn node 响应 可执行文件 二进制 函数调用 标准输出流 传输 | 更新日期: 2023-09-27 18:16:01

我有一个带有HTTP触发器的Azure函数。我想通过node.js和/或c#调用二进制文件,并将其标准输出流式传输到响应,同时在此过程中设置HTTP状态代码。

我无法通过AWS Lambda包装器使用的常用技术(例如child_process)做到这一点。产卵的node.js),虽然我可能错过了一些简单的。通过批处理函数是微不足道的,除了设置状态码,我还没有检查响应是否真正流。有没有通过node.js和/或c#来做这件事的例子?

Azure函数调用二进制可执行文件,将标准输出流式传输到响应(例如child_process).Spawn为node.j

Aaron,

这应该在Azure Functions环境之外工作。

在c#/Node中有很多关于如何执行进程并读取其输出的例子,所以我不会花很多时间在这上面,但这里有一个快速的函数示例,运行dir并打印目录:
using System;
using System.Diagnostics;
public static void Run(string input, TraceWriter log)
{
    log.Info("Executing");
    using (var process = new Process())
    {
        process.StartInfo.FileName = @"D:'Program Files (x86)'Git'usr'bin'dir.exe";
        process.StartInfo.Arguments = @"D:'home";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.Start();
        string output = process.StandardOutput.ReadToEnd();
        process.WaitForExit();
        log.Info(output);
    }
}

关于输出流,虽然可能,但不建议从Azure Functions(至少目前不是)。

希望这对你有帮助!