def main(): get_import = Query("GetPosdaFilesImportControl") go_in_service = Query("GoInServicePosdaImport") quit_q = Query("RelinquishControlPosdaImport") while True: # get current status for import_control in get_import.run(): pass if import_control.status == "waiting to go inservice": go_in_service.execute(MYPID) continue if import_control.status == "service process running": if import_control.processor_pid != MYPID: printe("Some other process controlling import") return if import_control.pending_change_request == "shutdown": quit_q.execute() printe("Relinquished control of posda_import") return printe("Doing actual work (well, pretending)") else: printe(f"unknown state ({import_control.status}) for posda_import")
def do_actual_work(import_control): if True: # remain_count == 0 printe(f"Sleeping {import_control.idle_seconds} seconds") time.sleep(import_control.idle_seconds)
import posda.fork from posda.main import printe parent_pid, my_pid = posda.fork.daemonize() printe(f"This is the child, all is well! It looks like my parent's pid was: {parent_pid}, mine is {my_pid}")
import posda.fork from posda.main import printe parent_pid, my_pid = posda.fork.daemonize() printe( f"This is the child, all is well! It looks like my parent's pid was: {parent_pid}, mine is {my_pid}" )
import os import sys import time from posda.main import printe parent_pid = os.getpid() print("Starting up.. verifying inputs and stuff, about to fork..") sys.stdin.close() sys.stdout.close() # if we don't close stderr the parent is not released??? # sys.stderr.close() child_pid = os.fork() if child_pid != 0: printe(f"I am the parent! my pid is: {parent_pid}, and my child's pid is: {child_pid}") os._exit(1) # sys.exit(1) mypid = os.getpid() printe(f"I am the child! My pid is: {mypid}, my parent's pid is {parent_pid}") time.sleep(5) printe("Slept for 5 seconds! wee")
background_pid=my_pid, background_subprocess_id=subprocess_id) get_series_count = Query(args.file_query_name) scan_id = Query("CreateSimplePhiScanRow").get_single_value( description=args.description, num_series=len(input_lines), file_query=args.file_query_name ) # create queries we are going to use multiple times # TODO: ^ that for series in input_lines: printe(f"Processing {series}") count = 0 for row in get_series_count.run(series): count += 1 printe(f"Found {count} files in this series.") series_scan_id = Query("CreateSimpleSeriesScanInstance").get_single_value( scan_instance_id=scan_id, series_instance_uid=series ) cmd = "PhiSimpleSeriesScan.pl" command = [cmd, series, args.file_query_name]