MCPcopy Create free account
hub / github.com/runhey/OnmyojiAutoScript / loop

Method loop

script.py:399–472  ·  view source on GitHub ↗

Main loop of scheduler. :return:

(self)

Source from the content-addressed store, hash-verified

397 exit(1)
398
399 def loop(self):
400 """
401 Main loop of scheduler.
402 :return:
403 """
404 logger.set_file_logger(self.config_name)
405 logger.info(f'Start scheduler loop: {self.config_name}')
406
407 while 1:
408 # Check update event from GUI
409 # if self.stop_event is not None:
410 # if self.stop_event.is_set():
411 # logger.info("Update event detected")
412 # logger.info(f"Alas [{self.config_name}] exited.")
413 # break
414
415 # Check game server maintenance
416 # self.checker.wait_until_available()
417 # if self.checker.is_recovered():
418 # # There is an accidental bug hard to reproduce
419 # # Sometimes, config won't be updated due to blocking
420 # # even though it has been changed
421 # # So update it once recovered
422 # del_cached_property(self, 'config')
423 # logger.info('Server or network is recovered. Restart game client')
424 # self.config.task_call('Restart')
425
426 # Get task
427 task = self.get_next_task()
428 # 更新 gui的任务
429 # Init device and change server
430 _ = self.device
431 # Skip first restart
432 if self.is_first_task and task == 'Restart':
433 logger.info('Skip task `Restart` at scheduler start')
434 self.config.task_delay(task='Restart', success=True, server=True)
435 del_cached_property(self, 'config')
436 continue
437
438 # Run
439 logger.info(f'Scheduler: Start task `{task}`')
440 self.device.stuck_record_clear()
441 self.device.click_record_clear()
442 logger.hr(task, level=0)
443 success = self.run(inflection.camelize(task))
444 logger.info(f'Scheduler: End task `{task}`')
445 self.is_first_task = False
446
447 # Check failures
448 # failed = deep_get(self.failure_record, keys=task, default=0)
449 failed = self.failure_record[task] if task in self.failure_record else 0
450 failed = 0 if success else failed + 1
451 # deep_set(self.failure_record, keys=task, value=failed)
452 self.failure_record[task] = failed
453 if failed >= 3:
454 logger.critical(f"Task `{task}` failed 3 or more times.")
455 logger.critical("Possible reason #1: You haven't used it correctly. "
456 "Please read the help text of the options.")

Callers 2

funcFunction · 0.95
mqtt_loopMethod · 0.80

Calls 7

get_next_taskMethod · 0.95
runMethod · 0.95
del_cached_propertyFunction · 0.90
task_delayMethod · 0.80
stuck_record_clearMethod · 0.80
click_record_clearMethod · 0.80
saveMethod · 0.45

Tested by

no test coverage detected