我有一个长时间运行(通常是秒,但是......)Web端点。
此端点应由AWS Lambda定期触发。
如果我等待Lambda中的响应(C#实现),这将被视为Lambda时间,我将被收费。
没有机会改变端点的行为。
我需要使用C#请求端点并且不要等待响应,因此端点将被触发,但Lambda执行将完成
答案 0 :(得分:0)
执行异步请求,但不要等待它。
答案 1 :(得分:0)
下面你可以找到一个如何实现这个的例子。
使用HttpListener
进行了测试。如果您尝试从端点返回一些内容,它将失败,因为连接已经关闭。
const string endpoint = "http://localhost:8081/";
var promise = new TaskCompletionSource<bool>();
var task = Task.Factory.StartNew(() =>
{
var request = WebRequest.Create(endpoint);
request.ContentType = "application/json";
request.Method = "POST";
request.BeginGetRequestStream(x =>
{
var r = (HttpWebRequest) x.AsyncState;
var stream = r.EndGetRequestStream(x);
var buffer = Encoding.UTF8.GetBytes("{}");
stream.Write(buffer, 0, buffer.Length);
request.BeginGetResponse(y => { }, request);
promise.SetResult(true);
}, request);
});
promise.Task.Wait();