Created
February 4, 2019 20:57
-
-
Save alissonperez/fe087dc44da76edb4695627d4c9262e4 to your computer and use it in GitHub Desktop.
multiprocessing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import consumer | |
import os | |
import sys | |
import signal | |
import logging | |
from config import Config | |
from multiprocessing import Process | |
Config.startup() | |
logger = logging.getLogger(__name__) | |
# Number of processes to spawn | |
DEFAULT_PROCESSES_NUM = 5 | |
# Store processes | |
processes = [] | |
process_num = DEFAULT_PROCESSES_NUM | |
if len(sys.argv) > 1: | |
process_num = int(sys.argv[1]) | |
if os.environ.get('WORKER_COUNT'): | |
process_num = int(os.environ.get('WORKER_COUNT')) | |
for i in range(process_num): | |
process = Process(target=consumer.start, args=(i + 1,)) | |
processes.append(process) | |
process.start() | |
# Handling Signals... | |
def process_signal_handler(signal, frame): | |
logging.info('MAIN - Signal received, sending terminate to processes') | |
# Stopping process | |
[p.terminate() for p in processes] | |
signal.signal(signal.SIGINT, process_signal_handler) | |
signal.signal(signal.SIGTERM, process_signal_handler) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment