Skip to content
Snippets Groups Projects
Commit baa1c6d2 authored by Bo-Chun Chen's avatar Bo-Chun Chen
Browse files

Add timeout handler

parent 2a82f31a
No related branches found
No related tags found
4 merge requests!147Merge previous default branch feat-cod-rmq into main,!85kill nginx process running under user from login node,!78Feat cod rmq,!61Feat error handle cli
...@@ -3,6 +3,7 @@ import json ...@@ -3,6 +3,7 @@ import json
import sys import sys
import rc_util import rc_util
import argparse import argparse
import signal
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('username', help='username that will be created') parser.add_argument('username', help='username that will be created')
...@@ -14,12 +15,18 @@ parser.add_argument('-v', '--verbose', action='store_true', help='verbose output ...@@ -14,12 +15,18 @@ parser.add_argument('-v', '--verbose', action='store_true', help='verbose output
parser.add_argument('-n', '--dry-run', action='store_true', help='enable dry run mode') parser.add_argument('-n', '--dry-run', action='store_true', help='enable dry run mode')
args = parser.parse_args() args = parser.parse_args()
timeout = 60
if args.email == '': if args.email == '':
args.email = args.username args.email = args.username
if '@' not in args.email: if '@' not in args.email:
args.email = args.username + '@' + args.domain args.email = args.username + '@' + args.domain
def timeout_handler(signum, frame):
print("Process timeout, there's might some issue with agents")
rc_util.rc_rmq.stop_consume()
def callback(channel, method, properties, body): def callback(channel, method, properties, body):
msg = json.loads(body) msg = json.loads(body)
username = msg['username'] username = msg['username']
...@@ -39,5 +46,9 @@ def callback(channel, method, properties, body): ...@@ -39,5 +46,9 @@ def callback(channel, method, properties, body):
rc_util.add_account(args.username, email=args.email, full=args.full_name, reason=args.reason) rc_util.add_account(args.username, email=args.email, full=args.full_name, reason=args.reason)
print(f'Account for {args.username} requested.') print(f'Account for {args.username} requested.')
# Set initial timeout timer
signal.signal(signal.SIGALRM, timeout_handler)
signal.setitimer(signal.ITIMER_REAL, timeout)
print('Waiting for completion...') print('Waiting for completion...')
rc_util.consume(args.username, routing_key=f'complete.{args.username}', callback=callback) rc_util.consume(args.username, routing_key=f'complete.{args.username}', callback=callback)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment