Фильтрация последних файлов в SFTP Logi c Apps при добавлении / изменении файлов триггера - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть приложение Logi c, которое подключается к SFTP-серверу и запускается триггером «файлы добавлены или изменены». Он настроен на запуск каждые 10 минут, ищет новые / измененные файлы и копирует их в учетную запись хранения Azure.

Проблема заключается в том, что этот путь к серверу SFTP перезаписывает набор файлов каждые X минут (Я не контролирую это), и поэтому довольно часто приложение Logi c пересекается с процессом обновления этих файлов и загружает файлы, которые все еще пишутся. Результат - поврежденные файлы.

Есть ли способ добавить фильтр к When files are added or modified (properties only), чтобы он учитывал только файлы с измененной датой, по крайней мере, 1-минутной давности?

Таким образом, файлы, которые в данный момент записываются, не будут добавлены в список файлов для загрузки. При следующем запуске приложения Logi c будут извлечены эти игнорируемые файлы и т. Д.

ОБНОВЛЕНИЕ

Я нашел условия триггера в настройках триггера но я не могу найти документацию по этому поводу. enter image description here

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Я проверяю образец @equals(triggers().code, 'InternalServerError'), на самом деле он использует функции условия в Функции логического сравнения , поэтому ключевое слово - убедиться, что свойство, которое вы хотите отфильтровать, находится в trigger или triggerBody или вы получите следующее сообщение об ошибке.

enter image description here

Поэтому я могу изменить выражение на @greater(triggerBody().LastModified,'2020-04-20T11:23:00Z'), это может отфильтровать файл, измененный менее чем 2020-04-20T11:23:00Z не запускает поток.

Также вы можете использовать другие функции, такие как less, greaterOrEquals et c в Функции логического сравнения .

0 голосов
/ 15 апреля 2020

Согласно тесту триггера «Когда файлы добавляются или изменяются», кажется, что мы не можем добавить фильтр в триггер для фильтрации записей, которые были изменены не менее чем за 1 минуту go. Мы можем просто получить List of Files LastModified datetime и l oop их, использовать условие " If ", чтобы судить, стоит ли его загружать.

enter image description here

Обновление:

enter image description here

Выражение на скриншоте:

sub(ticks(utcNow()), ticks(triggerBody()?['LastModified']))

Обходной путь обновления

Можно ли добавить действие «Задержка», если время последнего изменения меньше 1 минуты? Например, если время последнего изменения было менее 60 секунд, используйте «Задержка», чтобы подождать 5 минут до завершения операции перезаписи, затем выполните загрузку. enter image description here

...