Я использую kue для node.js, и я вижу, что есть образец кода для удаления заданий по завершению, но есть ли способ удалить устаревшие задания старше X? Я хотел бы видеть завершенные рабочие места в течение дня или двух, чтобы я мог просмотреть, что происходит, но для этого нужно очистить что-нибудь более старое.Как удалить завершенные задания старше x из kue
ответ
Kue API, по-видимому, значительно улучшился, поскольку этот вопрос был впервые задан. Я выкопал в код немного, и это гораздо проще версия работала для меня: (. Обработка ошибок опущена для краткости)
var kue = require('kue');
kue.Job.rangeByState('complete', 0, someLargeNumber, 1, function(err, jobs) {
jobs.forEach(function(job) {
if (job.created_at < yourTimeThreshold) return;
job.remove();
});
});
Было бы хорошо, если бы Kue предоставил механизм для очистки выполненных заданий в библиотеке, однако вы можете реализовать решение на основе каждого поля «created_at». Вот что я использую для удаления завершенных заданий старше 7 дней, сканирование каждые 24 часа.
var _ = require('underscore'),
kue = require('kue');
var jobs = kue.createQueue(),
q = new kue, // object so we can access exposed methods in the kue lib
hours = 24,
timer = hours * 60 * 60 * 1000; // timer for the setInterval function
var completedJobs = function(callback) {
/**
* completedJobs - uses the kue lib .complete function to get a list of
* all completed job ids, iterates through each id to retrieve the actual
* job object, then pushes the object into an array for the callback.
*
*/
q.complete(function(err, ids){
var jobs = [],
count = 0,
total = ids.length;
console.log('completedJobs -> ids.length:%s',ids.length);
_.each(ids, function(id){
kue.Job.get(id, function(err, job){
count++;
jobs.push(job);
if (total === count) {
callback(null, jobs);
return;
}
});
});
});
}
var removeJobs = function(jobs, callback) {
/**
* removeJobs - removes the job from kue by calling the job.remove from the
* job object collected in completedJobs().
*
*/
var count = 0,
total = jobs.length;
console.log('removeJobs -> jobs.length:%s',jobs.length);
_.each(jobs, function(job) {
job.remove(function(err) {
count++;
if (total === count) {
callback(null, count);
return;
}
});
});
}
var dateDiffInDays = function(d1, d2) {
/**
* dateDiffInDays - returns the difference between two Date objects in days
*/
var t2 = d2.getTime(),
t1 = d1.getTime();
return parseInt((t2-t1)/(24*3600*1000));
}
setInterval(function() {
/**
* setInterval - calls completedJobs in a 24-hour interval
*/
completedJobs(function(err, jobs) {
// callback to completedJobs
console.log('completedJobs -> callback-> jobs.length:%s', jobs.length);
var jobsToRemove = [],
now = new Date();
_.each(jobs, function(job){
var then = new Date(parseInt(job.created_at)),
diff = dateDiffInDays(then, now),
timePastForRemoval = 7; // remove anything older than 7 days
if (diff >= timePastForRemoval) {
jobsToRemove.push(job);
}
});
console.log('completedJobs -> callback -> jobsToRemove.length:%s', jobsToRemove.length);
if (jobsToRemove.length > 0) { // if we have jobsToRemove
removeJobs(jobsToRemove, function(err, count){
// callback to removeJobs
console.log('removeJobs -> callback -> jobs removed:%s',count);
});
} else {
console.log('completedJobs -> callback -> no jobs to remove');
}
});
}, timer);
console.log('Running kue completed job clean-up');
Я должен был сделать это и нашел код, указанный выше немного трудно следовать, я сделал легко расширить четкий и лаконичный метод здесь: https://gist.github.com/4212207
Я хотел, чтобы удалить неактуальные работу с кюэ а , а также модифицированный код Криса для работы без Underscore.js.
Код здесь: https://gist.github.com/niravmehta/6112330
Вы можете запустить его в командной строке, как
node kue_cleanup
Спасибо Крис за его прекрасный сценарий! Это была отличная отправная точка.
- 1. Удалить завершенные задания из списка <Task>
- 2. JobTracker не показывает завершенные задания
- 3. Удалить каталоги старше X дней
- 4. Удалить файлы старше x дней
- 5. Удалить файлы старше X минут
- 6. Удалить каталоги старше X дней?
- 7. Как удалить файлы старше X часов
- 8. Обратный вызов Kue при завершении задания
- 9. уникальные задания с kue для node.js
- 10. Python: удалить файлы старше X дней
- 11. Как удалить неактивные задания старше 6 месяцев в jenkins
- 12. Удалить все папки старше X дней (SHELL)
- 13. Linux - Удалить каталоги, которые старше x дней
- 14. Удалить файлы старше x дней на hadoop
- 15. Powershell удалить файлы старше x дней
- 16. Windows PowerShell - удалить файлы старше X дней
- 17. Удалить профили домена старше x дней
- 18. FTP удалить каталоги старше X дней
- 19. Удалить папки старше X в zip-файле
- 20. PowerShell Удалить папки старше X дней, прочитанных из txt-файла
- 21. Как удалить фрагмент из задания?
- 22. Как удалить данные старше x дней в HDFS
- 23. Как удалить файлы старше X часов или минут?
- 24. Как автоматически удалить комментарии Wordpress старше, чем X дней
- 25. Как удалить завершенные дни с домашней страницы?
- 26. NServiceBus: как архивировать завершенные или завершенные саги
- 27. NodeJS, ParseServer, KUE-планировщик задания вызывается несколько раз
- 28. Как найти документы старше или старше X в RethinkDB?
- 29. Можно изменить приоритет задания после создания в kue?
- 30. Plesk panel Cronjob удалить папку старше, чем x дней