Добрый день. Для решения своих задач использую АПИ. Создаю таск с помощью addTask. Записываю в БД taskUid. Кроном прохожусь по БД, выдергиваю taskUid и по нему с помощью getTaskState получаю состояние тасков, и если статус complited, то с помощью getTaskResultsFile получаю название файла результатов. Обрабатываю результат и записываю в БД. А файл результата таска удаляю. На этом этапе всё отлично, но иногда создается несколько тасков с разницей во времени несколько милисекунд, и у нескольких тасков имя совпадает: Aug-08_19-55-50.csv - для 5-ти тасков. И после того как первый таск обработан файл удаляется, но в этом же файле содержится информация ещё 4-х файлов, которая ещё не обработана. Это неудобно, потому спросил в поддержке как "обзывать" файлы используя либо Timestamp, либо добавлять милисекунды. В качестве решения предложили вариант с использованием tools.js. В итоге имею: Настройки - http://prntscr.com/g5yz5q При тестировании таска всё отлично: http://prntscr.com/g5z03x Но при попытке запустить таск через АПИ получаю ответ: {"msg":"Error: File not exists","success":0} Зайда на вебморду а-парсера вижу в таске следующее: http://prntscr.com/g5z0of Т.е. при тестировании имя файла формируется, а при запуске через АПИ нет. Но интересен тот факт, что в самой папке results файл создается, в него пишутся результаты. Я могу его скачать ручками. Он абсолютно корректен. Опять же обратившись в поддержку с этим вопросом получил ответ: "С помощью API можно забирать только статичные файлы." Так как эпопея с моей задачей длится уже 2 дня решил создать тему на форуме, может быстрее решится. Чем файл с названием Aug-08_10-10-10.csv отличается от файла с названием 1502187010367.csv Что значит "статичные файлы"? Как решить мою проблему?
Добрый день, я владелец лицензии. Я задавал вопрос в поддержке. Эту ветку создал программист, чтобы не было испорченного телефона.
Выше отписался rus5665 (от имени которого я пишу), владелец лицензии. Вопросы топика в силе. Вы уж извините за настойчивость. Я понимаю, что подобные вопросы могут (и должны) решаться через систему тикетов, но мы уже 2 дня "топчемся" на одном месте из-за непонимания в общении. Ответы не совсем соответствуют задаваемому вопросу. Потому и отписался на форуме, может кто уже сталкивался с подобным и знает как решить проблему. Или как её обойти. Пусть даже костыль, но рабочий.
Ответы вполне соответствуют, т.к. имя файла формируется через внешнюю функцию при каждом запросе, то таких файлов может быть большое множество - поэтому парсер не запоминает имена динамических файлов результатов, и API getTaskResultsFile в этом случае работать не будет. Решение очень простое и очевидное - формируйте имя файла результата сами, при добавлении задания через API addTask. Не знаю зачем было так заморачиваться с генерацией миллисекунд
Ну вот опять. Смотрите: Если имя файла - $datefile.format().csv то всё работает нормально. Если же имя файла $datefile.format().${query}.csv, то начинаются те же грабли, что и при tools.js (как Вы выразились через внешнюю функцию) http://prntscr.com/g69i7r - настройки http://prntscr.com/g69kvt - вебморда http://prntscr.com/g69l95 - ответ API Файл в папке опять же создается. Чем $datefile.format().csv отличается от datefile.format().${query}.csv ? Где тут внешняя функция, если в имени файла используются только переменные? Спасибо. Так и поступил: http://prntscr.com/g69szv
когда добавляется переменная $query - имя файла начинает зависеть от запроса, т.е. если запросов например 10 млн, то столько же разных файлов будет
Хм. Ну логично. Главное, что ответ на мой вопрос получен - совет с генерацией файла самостоятельно. Значит всё не зря Ещё раз спасибо.