#50 adds psutil as alternative os.getppid provider

This commit is contained in:
Ilan Steemers
2015-08-23 21:19:35 +02:00
parent 9dfb65a7af
commit b414b637eb
2 changed files with 13 additions and 3 deletions
+2 -3
View File
@@ -11,7 +11,6 @@ standard_library.install_aliases()
# Standard
import importlib
import os
import signal
import socket
import sys
@@ -31,7 +30,7 @@ from django import db
import signing
import tasks
from django_q.conf import Conf, redis_client, logger, psutil
from django_q.conf import Conf, redis_client, logger, psutil, get_ppid
from django_q.models import Task, Success, Schedule
from django_q.monitor import Status, Stat, ping_redis
@@ -111,7 +110,7 @@ class Sentinel(object):
signal.signal(signal.SIGINT, signal.SIG_IGN)
signal.signal(signal.SIGTERM, signal.SIG_DFL)
self.pid = current_process().pid
self.parent_pid = os.getppid()
self.parent_pid = get_ppid()
self.name = current_process().name
self.list_key = list_key
self.r = redis_client
+11
View File
@@ -7,6 +7,7 @@ from django.utils.translation import ugettext_lazy as _
from django.conf import settings
# external
import os
import redis
# optional
@@ -143,3 +144,13 @@ def get_redis_client():
# redis client
redis_client = get_redis_client()
# get parent pid compatibility
def get_ppid():
if hasattr(os, 'getppid'):
return os.getppid()
elif psutil:
return psutil.Process(os.getpid()).ppid()
else:
raise OSError('Your OS does not support `os.getppid`. Please install `psutil` as an alternative provider.')