コード例 #1
0
    def __init__(self):
        """Generic initialization code."""

        # session folder (create if missing)
        self.session_folder = '../sessions'
        create_folder(self.session_folder)

        # log folder (create if missing)
        self.log_folder = f'{self.session_folder}/logs'
        create_folder(self.log_folder)

        # work folder (create and clear)
        self.work_folder = f'{self.session_folder}/{script_name()}/work'
        clear_folder(self.work_folder)

        # configuration engines
        self.config = None
        self.option = None

        # database
        self.database = None
        self.target_db_conn = None

        # parameter driven
        self.dataset_id = ''
        self.table_name = ''

        # since we start logging before we read config/options we log to known path vs dataset specific path
        log_setup(log_file_name=f'{self.log_folder}/{script_name()}.log')
        log_session_info()
コード例 #2
0
    def run(self):
        """
        Options
        --onetime[=1] run once, then exit; use if called by an external scheduler.
        --nowait[=1] run immediately without waiting for scheduler to determine execution.
        """

        # exit if __init__ didn't find a valid project file
        if not self.project_name:
            return

        # display application banner
        app_name = script_name()
        print(f'UDP {app_name.title()} {self.project_name}')
        copyright_year = f'{now():%Y}'
        copyright_message = f'Copyright (c) 2018-{copyright_year} Alterra Mountain Company, Inc.'
        print(copyright_message)

        # make sure root sessions folder exists
        create_folder(self.session_folder)

        # since we start logging before we read config/options we log to known path vs dataset specific path
        log_setup(
            log_file_name=f'{self.session_folder}/{self.project_name}.log')
        log_session_info()

        # common setup
        self.setup()

        # application specific startup logic
        self.start()

        # scheduling behavior based on --onetime, --nowait option
        if self.option('onetime') == '1':
            # one-time run; use when this script is being called by an external scheduler
            logger.info('Option(onetime=1): executing once')
            self.main()
        else:
            if self.option('nowait') == '1':
                # no-wait option; execute immediately without waiting for scheduler to initiate
                logger.info(
                    'Option(nowait=1): executing immediately, then following regular schedule'
                )
                self.main()

            # standard wait for scheduled time slot and run logic
            while True:
                self.progress_message('waiting for next job ...')
                if self.schedule.wait():
                    self.main()
                    if self.option('scheduled_onetime') == '1':
                        logger.info(
                            'Option(scheduled_onetime=1): ran once at first scheduled timeslot'
                        )
                        break
                else:
                    break

        self.cleanup()
コード例 #3
0
ファイル: udp.py プロジェクト: jeremybnelson/python-udp-util
def test():
    # activate logging
    log_setup()
    log_session_info()

    # load standard config
    config = ConfigSectionKey("../conf", "../local")
    config.load("bootstrap.ini", "bootstrap")
    config.load("init.ini")
    config.load("connect.ini")
    setup(config)
コード例 #4
0
	def run(self, *args, **kwargs):
		"""
		Options
		--onetime[=1] run once, then exit; use if called by an external scheduler.
		--nonwait[=1] run immediately without waiting for scheduler to determine execution.
		"""

		# make sure root sessions folder exists
		create_folder('../sessions')

		# TODO: We start logging before we read config and options so we don't know datapool or anything else.
		# TODO: We should log to a default app log and then SWITCH LOG file over after we process options and
		# TODO: and config files ??? (2018-09-25)
		log_setup(log_file_name=f'../sessions/{script_name()}.log')
		log_session_info()

		self.setup(*args, **kwargs)
		self.start()

		# scheduling behavior based on --onetime, --nowait option
		if self.option('onetime') == '1':
			# one-time run; use when this script is being called by an external scheduler
			logger.info('Option(onetime=1): executing once')
			self.main()
		else:
			if self.option('nowait') == '1':
				# no-wait option; execute immediately without waiting for scheduler to initiate
				logger.info('Option(nowait=1): executing immediately, then following regular schedule')
				self.main()

			# standard wait for scheduled time slot and run logic
			while True:
				if self.schedule.wait():
					self.main()
				else:
					break

		self.cleanup()
コード例 #5
0
ファイル: cloud_az.py プロジェクト: jeremybnelson/NymicsRepo
		"dataVersion": "",
		"metadataVersion": "1"
	}

	json_queue_message = json.dumps(queue_message)


	# response = queue.get()
	# notification = ObjectstoreNotification(response)
	queue.put(json_queue_message)
	response = queue.get()
	notification = ObjectstoreNotification(response)
	queue.delete(notification)
	"""
	while True:
		time.sleep(1)
		response = queue.get()
		if response:
			notification = ObjectstoreNotification(response)
			queue.delete(notification)
			logger.info(f'Test mode: notification message = {notification}')
		else:
			break
	"""


if __name__ == '__main__':
	log_setup(log_level=logging.INFO)
	log_session_info()
	main()
コード例 #6
0
def main():
    # default and custom basicConfig()
    log_setup()
    log_session_info()
    logger.info('Started')
    test()