def sender_shutdown():
global shutdown_started
# Make control+c or some other kill signal force quit the second time it happens
if shutdown_started:
logger.info('Force exiting')
os._exit(0)
else:
shutdown_started = True
logger.info('Shutting server..')
# Immediately release all locks and give up any master status and slave presence
if coordinator:
coordinator.leave_cluster()
# Stop sender RPC server
rpc.shutdown()
for tasks in worker_tasks.itervalues():
for task in tasks:
task['kill_set'].set()
for tasks in autoscale_email_worker_tasks.itervalues():
for task in tasks:
task['kill_set'].set()
logger.info('Waiting for sender workers to shut down')
for tasks in worker_tasks.itervalues():
for task in tasks:
task['greenlet'].join()
for tasks in autoscale_email_worker_tasks.itervalues():
for task in tasks:
task['greenlet'].join()
# Force quit. Avoid sender process existing longer than it needs to
os._exit(0)
评论列表
文章目录