0
我有一個運行在appharbor上的代碼,其中我將一些數據傳輸到客戶端。理想情況下,它需要的時間非常長,可能需要30-40分鐘。長時間運行請求在AppHarbor中自動中斷
獲得流式傳輸的內容是非緩衝式的,這意味着響應不會持續很長時間,但會被asap寫入,並會一直持續到指定的時間。我已經提到了下面的代碼,但是應用程序在10分鐘後失敗。有人能讓我知道這裏發生了什麼錯誤。
public class TestWaitResult : ActionResult
{
int _timeToWait;
object o = new object();
TextWriter output;
HttpResponseBase r;
int _sleepTimer;
public TestWaitResult(int timeToWait, int sleepTimer)
{
_timeToWait = timeToWait;
_sleepTimer = sleepTimer;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.Buffer = context.HttpContext.Response.BufferOutput = false;
r = context.HttpContext.Response;
output = context.HttpContext.Response.Output;
while (r.IsClientConnected)
{
Log("Executing...");
System.Threading.Thread.Sleep(_sleepTimer * 1000);
if ((_timeToWait = _timeToWait - _sleepTimer) <= 0)
{
Log("Timetowait exceeds");
break;
}
}
}
private void Log(string message)
{
lock (o)
{
try
{
if (r.IsClientConnected)
{
output.WriteLine("<br/>{0} : {1}", DateTime.Now.ToString("hh:mm:ss.fff"), message);
}
}
catch (Exception ex)
{
throw;
}
}
}
}
我不認爲這樣的限制是2分鐘,因爲我可以看到10分鐘甚至5分鐘的響應,並突然中斷。你指的是從S3下載的意思? –