@nexrender/worker 1.51.5 → 1.52.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 +3 -3
- package/src/bin.js +13 -1
- package/src/instance.js +26 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nexrender/worker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.52.0",
|
|
4
4
|
"author": "inlife",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"homepage": "https://www.nexrender.com",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@nexrender/api": "^1.50.1",
|
|
23
|
-
"@nexrender/core": "^1.51.
|
|
23
|
+
"@nexrender/core": "^1.51.8",
|
|
24
24
|
"@nexrender/types": "^1.45.6",
|
|
25
25
|
"arg": "^4.1.0",
|
|
26
26
|
"chalk": "^2.4.2",
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "3bea58d245779f156f588f5b012b77036684449a"
|
|
33
33
|
}
|
package/src/bin.js
CHANGED
|
@@ -27,6 +27,8 @@ const args = arg({
|
|
|
27
27
|
'--stop-on-error': Boolean,
|
|
28
28
|
'--exit-on-empty-queue': Boolean,
|
|
29
29
|
'--tolerate-empty-queues': Number,
|
|
30
|
+
'--stop-at-time': String,
|
|
31
|
+
'--stop-days': String,
|
|
30
32
|
|
|
31
33
|
'--skip-cleanup': Boolean,
|
|
32
34
|
'--skip-render': Boolean,
|
|
@@ -123,7 +125,15 @@ if (args['--help']) {
|
|
|
123
125
|
--tolerate-empty-queues worker will check an empty queue this many times before exiting (if that option has
|
|
124
126
|
been set using --exit-on-empty-queues). Defaults to zero. If specified will be used instead of
|
|
125
127
|
NEXRENDER_TOLERATE_EMPTY_QUEUES env variable
|
|
126
|
-
|
|
128
|
+
|
|
129
|
+
--stop-at-time worker will exit at the given time if given.
|
|
130
|
+
example: 5:00 will stop at 5 am local time.
|
|
131
|
+
|
|
132
|
+
--stop-days comma separated list of weekdays when to stop. Must be used together with --stop-at-time
|
|
133
|
+
0 is sunday, 6 is saturday
|
|
134
|
+
example: --stop-at-time=5:00 stop-days=1,2,3,4,5
|
|
135
|
+
will stop at 5 am but not on weekend
|
|
136
|
+
|
|
127
137
|
--no-license prevents creation of the ae_render_only_node.txt file (enabled by default),
|
|
128
138
|
which allows free usage of trial version of Adobe After Effects
|
|
129
139
|
|
|
@@ -219,6 +229,8 @@ opt('reuse', '--reuse');
|
|
|
219
229
|
opt('stopOnError', '--stop-on-error');
|
|
220
230
|
opt('tolerateEmptyQueues', '--tolerate-empty-queues');
|
|
221
231
|
opt('exitOnEmptyQueue', '--exit-on-empty-queue');
|
|
232
|
+
opt('stopAtTime', '--stop-at-time');
|
|
233
|
+
opt('stopDays', '--stop-days');
|
|
222
234
|
opt('maxMemoryPercent', '--max-memory-percent');
|
|
223
235
|
opt('imageCachePercent', '--image-cache-percent');
|
|
224
236
|
opt('polling', '--polling');
|
package/src/instance.js
CHANGED
|
@@ -12,10 +12,16 @@ const createWorker = () => {
|
|
|
12
12
|
let emptyReturns = 0;
|
|
13
13
|
let active = false;
|
|
14
14
|
let settingsRef = null;
|
|
15
|
+
let stop_datetime = null;
|
|
15
16
|
|
|
16
17
|
const nextJob = async (client, settings) => {
|
|
17
18
|
do {
|
|
18
19
|
try {
|
|
20
|
+
if (stop_datetime !== null && new Date() > stop_datetime) {
|
|
21
|
+
active = false;
|
|
22
|
+
return
|
|
23
|
+
}
|
|
24
|
+
|
|
19
25
|
let job = await (settings.tagSelector ?
|
|
20
26
|
await client.pickupJob(settings.tagSelector) :
|
|
21
27
|
await client.pickupJob()
|
|
@@ -89,7 +95,27 @@ const createWorker = () => {
|
|
|
89
95
|
worker_setting_stop_on_error: settings.stopOnError,
|
|
90
96
|
})
|
|
91
97
|
|
|
98
|
+
if(settings.stopAtTime) {
|
|
99
|
+
let stopTimeParts = settings.stopAtTime.split(':'); // split the hour and minute
|
|
100
|
+
let now = new Date(); // get current date object
|
|
101
|
+
|
|
102
|
+
stop_datetime = new Date(); // new date object for stopping time
|
|
103
|
+
stop_datetime.setHours(stopTimeParts[0], stopTimeParts[1], 0, 0); // set the stop time
|
|
104
|
+
|
|
105
|
+
if(stop_datetime.getTime() <= now.getTime()){
|
|
106
|
+
stop_datetime.setDate(stop_datetime.getDate() + 1); // if it's past the stop time, move it to next day
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if(settings.stopDays) {
|
|
110
|
+
let stopDaysList = settings.stopDays.split(',').map(Number); // convert string weekdays into integer values
|
|
111
|
+
while(!stopDaysList.includes(stop_datetime.getDay())) {
|
|
112
|
+
stop_datetime.setDate(stop_datetime.getDate() + 1); // if stop_datetime's weekday is not in the list, add one day
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
92
117
|
do {
|
|
118
|
+
|
|
93
119
|
let job = await nextJob(client, settings);
|
|
94
120
|
|
|
95
121
|
// if the worker has been deactivated, exit this loop
|