Проверете дали заявката за уеб API е завършена

Имам услуга на Windows, която задейства заявка на всеки 5 минути към контролер на Web API. Уеб API ще извлече някои данни от приложение A и ще ги обработи и след това ще ги постави в приложение B. По принцип той търси нови и актуализирани записи след A на всеки 5 минути - имам различни типове записи и интервалите може да са различни в зависимост от честота на промяна. Всеки запис ще има колона Modified_Date. Тази колона ще се използва за извличане на данни от A. Имам таблица, която се използва от услугата Windows за задействане на заявки. Тази таблица съхранява последната modified_date на всеки тип запис. Така че при всяка заявка, кажете, че извличам 1000 записа, ще получа максималната дата на тези 1000 записа и ще я съхраня в базата данни при следващата заявка, след което ще използвам тази дата.

Сега проблемът ми понякога зависи от скоростта на мрежата и броя на извлечените записи, петте минути може да изтекат, докато първата заявка все още се изпълнява. Не искам втората заявка да започне, преди да е направена първата.

Как най-добре мога да проверя дали първата заявка е изпълнена?


person Edgias    schedule 21.06.2016    source източник
comment
Казвате, че заявката се задейства на всеки 5 минути. Очаквате ли обработката, необходима от Приложение A за поставяне на данните в Приложение B, да отнеме 5 минути?   -  person Patrick Bell    schedule 21.06.2016
comment
Нещо не е наред с извличането на данни в приложение A. Подозирам, че базата данни и/или заявката са лошо проектирани. Нито една заявка, която просто извлича няколко хиляди записа, не трябва да отнеме близо 5 минути. Предлагам ви да публикувате въпрос за база данни със спецификата на вашата база данни и заявка, за да ви помогнем да разберете защо това отнема толкова време.   -  person Clint B    schedule 21.06.2016
comment
@ext0 Да, в някои случаи очаквам да отнеме толкова време, тъй като генерира повече от 350 000 на минута в зависимост от времето на месеца.   -  person Edgias    schedule 21.06.2016
comment
@ClintB За съжаление нямам достъп до базата данни. Ние интегрираме две системи заедно.   -  person Edgias    schedule 21.06.2016
comment
Имате ли трудно изискване да запазите логиката, която извиква вашия контролер в услуга на Windows? Или други начини биха били подходящи, стига да можете да задействате само една заявка наведнъж в рамките на интервал от 5 минути?   -  person oldbam    schedule 25.08.2016


Отговори (1)


Можете да направите услуга сингълтън, която да държи флаг, който проверява дали предишната заявка е приключила. Заявката задава флага, когато започне и освобождава флага, когато свърши.

person Phronux    schedule 21.06.2016