@nexrender/worker 1.61.1 → 1.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/instance.js +23 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexrender/worker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.62.0",
|
|
4
4
|
"author": "inlife",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"homepage": "https://www.nexrender.com",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@nexrender/api": "^1.
|
|
23
|
-
"@nexrender/core": "^1.
|
|
24
|
-
"@nexrender/types": "^1.
|
|
22
|
+
"@nexrender/api": "^1.62.0",
|
|
23
|
+
"@nexrender/core": "^1.62.0",
|
|
24
|
+
"@nexrender/types": "^1.62.0",
|
|
25
25
|
"arg": "^4.1.0",
|
|
26
26
|
"chalk": "^2.4.2",
|
|
27
27
|
"rimraf": "^3.0.2"
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "6685318687feede05d00585d3830bb774a6a1f28"
|
|
33
33
|
}
|
package/src/instance.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
1
3
|
const { createClient } = require('@nexrender/api')
|
|
2
4
|
const { init, render } = require('@nexrender/core')
|
|
3
5
|
const { getRenderingStatus } = require('@nexrender/types/job')
|
|
@@ -7,9 +9,24 @@ const pkg = require('../package.json')
|
|
|
7
9
|
const NEXRENDER_API_POLLING = process.env.NEXRENDER_API_POLLING || 30 * 1000;
|
|
8
10
|
const NEXRENDER_TOLERATE_EMPTY_QUEUES = process.env.NEXRENDER_TOLERATE_EMPTY_QUEUES;
|
|
9
11
|
const NEXRENDER_PICKUP_TIMEOUT = process.env.NEXRENDER_PICKUP_TIMEOUT || 60 * 1000; // 60 second timeout by default
|
|
12
|
+
const LOCK_FILE_NAME = process.env.NEXRENDER_LOCK_FILE_NAME || '.nexrender-worker.lock';
|
|
10
13
|
|
|
11
14
|
const delay = amount => new Promise(resolve => setTimeout(resolve, amount))
|
|
12
15
|
|
|
16
|
+
const checkLockFile = (settings) => {
|
|
17
|
+
const lockFilePath = path.join(path.dirname(process.execPath), LOCK_FILE_NAME);
|
|
18
|
+
try {
|
|
19
|
+
if (fs.existsSync(lockFilePath)) {
|
|
20
|
+
settings.logger.log('[worker] Lock file detected, initiating graceful shutdown...');
|
|
21
|
+
fs.unlinkSync(lockFilePath);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
} catch (err) {
|
|
25
|
+
settings.logger.error(`[worker] Error handling lock file: ${err.message}`);
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
|
|
13
30
|
const createWorker = () => {
|
|
14
31
|
let emptyReturns = 0;
|
|
15
32
|
let active = false;
|
|
@@ -43,6 +60,12 @@ const createWorker = () => {
|
|
|
43
60
|
return null
|
|
44
61
|
}
|
|
45
62
|
|
|
63
|
+
// Check for lock file before proceeding
|
|
64
|
+
if (checkLockFile(settings)) {
|
|
65
|
+
active = false;
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
|
|
46
69
|
settings.logger.log(`[worker] checking for new jobs...`);
|
|
47
70
|
|
|
48
71
|
let job = await withTimeout(
|