-
есть сервис на Delphi, внутри сервиса создается Indy HTTPServer, который будет получать большое число запросов GET. то есть в момент завершения сервиса (событие onStop или onShutdown) будет существовать некоторое количество потоков, обрабатывающих запросы. как дождаться в методе их завершения ? или это не нужно руками делать ?
-
По-моему, это не тот случай, где нужно чего-то ждать. Нужно срочно все закрывать, завершать все потоки и закрываться. Если будет промедление, у оператора могут быть проблемы с последующим стартом этого сервиса.
-
нет, тут важно обработать корректно все те запросы, которые были приняты
да там то и у HTTPServer параметр TerminateWaitTime стоит в 20000, то есть 20с на запрос максимум ... но не ждать же их каждый раз в onStop sleep'ом. а как посмотреть для компонента IdHTTPServer количество потоков обработки я не знаю
-
> palva (08.05.2008 15:57:01) [1]
У оператора могут проблемы не только со стартом этого сервиса, но и со стартом Виндоус.
-
При стопе взводишь флаг, по которому перестаешь принимать входящие, дожидаешься окончания всех ниток, умираешь.
-
try
with IdHTTPServer1.Threads.LockList do ShowMessageИлиКакТоПоДругому('всего сессий:' + IntToStr(Count));
finally
IdHTTPServer1.Threads.UnlockList;
end;
-
Reindeer Moss Eater
спасибо
Anatoly Podgoretsky
объясните, плз, почему
-
... для обращения к IdHTTPServer.Threads нужно было руками добавить в uses IdTCPServer
-
> laao (08.05.2008 17:04:06) [6]
Разрушишь базы или систему. Нельзя блокировать завершение Виндоус.