/** * イベント集計タスク実行 */ import { chevre } from '../../../lib/index'; import * as mongoose from 'mongoose'; import * as redis from 'redis'; const redisClient = redis.createClient({ port: Number(process.env.REDIS_PORT), host: process.env.REDIS_HOST, password: process.env.REDIS_KEY, tls: (process.env.REDIS_TLS_SERVERNAME !== undefined) ? { servername: process.env.REDIS_TLS_SERVERNAME } : undefined }); export async function aggregateScreeningEvent() { await mongoose.connect(process.env.MONGOLAB_URI); let count = 0; const MAX_NUBMER_OF_PARALLEL_TASKS = 10; const INTERVAL_MILLISECONDS = 100; setInterval( async () => { if (count > MAX_NUBMER_OF_PARALLEL_TASKS) { return; } count += 1; try { console.log('executing...', count); await chevre.service.task.executeByName({ name: chevre.factory.taskName.AggregateScreeningEvent })({ connection: mongoose.connection, redisClient: redisClient }); console.log('executed', count); } catch (error) { console.error(error); } count -= 1; }, INTERVAL_MILLISECONDS ); } aggregateScreeningEvent() .then(() => { console.log('success!'); }) .catch(console.error);