Skip to content

Instantly share code, notes, and snippets.

@alissonperez
Created February 4, 2019 20:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alissonperez/fe087dc44da76edb4695627d4c9262e4 to your computer and use it in GitHub Desktop.
Save alissonperez/fe087dc44da76edb4695627d4c9262e4 to your computer and use it in GitHub Desktop.
multiprocessing
#!/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