@nexrender/worker 1.51.8 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexrender/worker",
3
- "version": "1.51.8",
3
+ "version": "1.52.0",
4
4
  "author": "inlife",
5
5
  "main": "src/index.js",
6
6
  "homepage": "https://www.nexrender.com",
@@ -29,5 +29,5 @@
29
29
  "publishConfig": {
30
30
  "access": "public"
31
31
  },
32
- "gitHead": "7f516f852cfc0edc6937f1b49ad1f236d7837d51"
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