আমার দুটি ফাংশন আছে, scheduleScan()
এবং scan()
।
scan()
কলগুলি scheduleScan()
যখন নতুন স্ক্যানের সময় নির্ধারণ ব্যতীত আর কিছুই করার থাকে না , তাই scheduleScan()
সময়সূচী করতে পারে scan()
। তবে সমস্যা আছে, কিছু কাজ দু'বার চালায়।
আমি নিশ্চিত করতে চাই যে কোনও নির্দিষ্ট সময়ে যে কোনও সময়ে প্রক্রিয়াজাত হচ্ছে। আমি কীভাবে এটি অর্জন করতে পারি? আমি বিশ্বাস করি এর সাথে কিছু করার আছে done()
, (এটি স্ক্যানে ছিল (), এখন সরানো হয়েছে) তবে আমি সমাধান দিয়ে আসতে পারিনি।
ষাঁড় সংস্করণ: 3.12.1
গুরুত্বপূর্ণ দেরী সম্পাদনা: scan()
অন্য ফাংশনগুলিকে কল করে এবং তারা অন্য ফাংশনগুলিকে কল করতে বা নাও বলতে পারে, তবে তারা সমস্ত সিঙ্ক ফাংশন, তাই কেবলমাত্র তাদের নিজস্ব কাজ শেষ হলে একটি ফাংশন কল করে, কেবলমাত্র একটি পথ এগিয়ে যায়। "ট্রি" এর শেষে, আমি এটিকে বলি, শেষ ফাংশনটি শিডিউল স্ক্যানকে কল করে (), তবে দুটি যুগপত কাজ চলছে না। প্রতিটি একক কাজ শুরু scan()
হয় এবং পথেই শেষ হয়scheduleScan(stock, period, milliseconds, 'called by file.js')
export function update(job) {
// does some calculations, then it may call scheduleScan() or
// it may call another function, and that could be the one calling
// scheduleScan() function.
// For instance, a function like finalize()
}
export function scan(job) {
update(job)
}
import moment from 'moment'
import stringHash from 'string-hash'
const opts = { redis: { port: 6379, host: '127.0.0.1', password: mypassword' } }
let queue = new Queue('scan', opts)
queue.process(1, (job) => {
job.progress(100).then(() => {
scan(job)
})
})
export function scheduleScan (stock, period, milliseconds, triggeredBy) {
let uniqueId = stringHash(stock + ':' + period)
queue.getJob(uniqueId).then(job => {
if (!job) {
if (milliseconds) {
queue.add({ stock, period, triggeredBy }, { delay: milliseconds, jobId: uniqueId }).then(() => {
// console.log('Added with ms: ' + stock + ' ' + period)
}).catch(err => {
if (err) {
console.log('Can not add because it exists ' + new Date())
}
})
} else {
queue.add({ stock, period, triggeredBy }, { jobId: uniqueId }).then(() => {
// console.log('Added without ms: ' + stock + ' ' + period)
}).catch(err => {
if (err) {
console.log('Can not add because it exists ' + new Date())
}
})
}
} else {
job.getState().then(state => {
if (state === 'completed') {
job.remove().then(() => {
if (milliseconds) {
queue.add({ stock, period, triggeredBy }, { delay: milliseconds, jobId: uniqueId }).then(() => {
// console.log('Added with ms: ' + stock + ' ' + period)
}).catch(err => {
if (err) {
console.log('Can not add because it exists ' + new Date())
}
})
} else {
queue.add({ stock, period, triggeredBy }, { jobId: uniqueId }).then(() => {
// console.log('Added without ms: ' + stock + ' ' + period)
}).catch(err => {
if (err) {
console.log('Can not add because it exists ' + new Date())
}
})
}
}).catch(err => {
if (err) {
// console.log(err)
}
})
}
}).catch(err => {
// console.log(err)
})
}
})
}
scan
ফাংশন সন্ধান করতে অক্ষম , আপনি সাহায্য করতে পারেন?