implement separate web workers #252
1 changed files with 4 additions and 4 deletions
|
@ -141,12 +141,12 @@ async function connectDb(): Promise<void> {
|
|||
|
||||
async function spawnWorkers(clusterLimits: Required<Config['clusterLimits']>): Promise<void> {
|
||||
const modes = ['web', 'queue'];
|
||||
const total = modes.reduce((acc, mode) => acc + clusterLimits[mode], 0);
|
||||
if (total > os.cpus().length) {
|
||||
bootLogger.error(`configuration error: cluster limits total (${total}) must not exceed number of cores (${os.cpus().length})`);
|
||||
process.exit(78);
|
||||
const cpus = os.cpus().length;
|
||||
for (const mode of modes.filter(mode => clusterLimits[mode] > cpus)) {
|
||||
bootLogger.warn(`configuration warning: cluster limit for ${mode} exceeds number of cores (${cpus})`);
|
||||
}
|
||||
|
||||
const total = modes.reduce((acc, mode) => acc + clusterLimits[mode], 0);
|
||||
const workers = new Array(total);
|
||||
workers.fill('web', 0, clusterLimits.web);
|
||||
workers.fill('queue', clusterLimits.web);
|
||||
toast marked this conversation as resolved
|
||||
|
|
Loading…
Reference in a new issue
This construction is a little odd and seems to me to be prone to off-by-ones.
I would write it as this:
Your example code wouldn't work because
new Array(n)
generates an array withn
empty slots andmap
basically ignores those.I've thought about it a bit and it's fine.
Could be a TODO for cleanup later, but this is fine and works as expected.