Skip to content

Commit d585f68

Browse files
committed
Merge pull request binarymatt#72 from joeshaw/joeshaw-pidfiles
add a -p flag for saving pidfiles in each of the scripts
2 parents 12eb028 + 22899c0 commit d585f68

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

pyres/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from redis import Redis
44
import pyres.json_parser as json
55

6+
import os
67
import time, datetime
78
import sys
89
import logging
@@ -26,6 +27,15 @@ def setup_logging(log_level=logging.INFO, filename=None, stream=sys.stderr):
2627
'%(asctime)s %(levelname)-8s %(message)s', '%Y-%m-%d %H:%M:%S'))
2728
logger.addHandler(handler)
2829

30+
def setup_pidfile(path):
31+
if not path:
32+
return
33+
dirname = os.path.dirname(path)
34+
if not os.path.exists(dirname):
35+
os.makedirs(dirname)
36+
with open(path, 'w') as f:
37+
f.write(str(os.getpid()))
38+
2939
def my_import(name):
3040
"""Helper function for walking import calls when searching for classes by
3141
string names.

pyres/scripts.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from itty import run_itty
66

77
from pyres.horde import Khan
8-
from pyres import setup_logging
8+
from pyres import setup_logging, setup_pidfile
99
from pyres.scheduler import Scheduler
1010
from resweb import server as resweb_server
1111
from pyres.worker import Worker
@@ -21,6 +21,7 @@ def pyres_manager():
2121
parser.add_option('-l', '--log-level', dest='log_level', default='info', help='log level. Valid values are "debug", "info", "warning", "error", "critical", in decreasing order of verbosity. Defaults to "info" if parameter not specified.')
2222
parser.add_option("--pool", type="int", dest="pool_size", default=1, help="Number of minions to spawn under the manager.")
2323
parser.add_option('-f', dest='logfile', help='If present, a logfile will be used.')
24+
parser.add_option('-p', dest='pidfile', help='If present, a pidfile will be used.')
2425
(options,args) = parser.parse_args()
2526

2627
if len(args) != 1:
@@ -30,6 +31,8 @@ def pyres_manager():
3031
log_level = getattr(logging, options.log_level.upper(), 'INFO')
3132
#logging.basicConfig(level=log_level, format="%(asctime)s: %(levelname)s: %(message)s")
3233

34+
setup_pidfile(options.pidfile)
35+
3336
interval = options.interval
3437
if interval is not None:
3538
interval = float(interval)
@@ -47,10 +50,12 @@ def pyres_scheduler():
4750
parser.add_option("--port",dest="port",type="int", default=6379)
4851
parser.add_option('-l', '--log-level', dest='log_level', default='info', help='log level. Valid values are "debug", "info", "warning", "error", "critical", in decreasing order of verbosity. Defaults to "info" if parameter not specified.')
4952
parser.add_option('-f', dest='logfile', help='If present, a logfile will be used.')
53+
parser.add_option('-p', dest='pidfile', help='If present, a pidfile will be used.')
5054
(options,args) = parser.parse_args()
5155
log_level = getattr(logging, options.log_level.upper(),'INFO')
5256
#logging.basicConfig(level=log_level, format="%(module)s: %(asctime)s: %(levelname)s: %(message)s")
5357
setup_logging(log_level=log_level, filename=options.logfile)
58+
setup_pidfile(options.pidfile)
5459
server = '%s:%s' % (options.host, options.port)
5560
Scheduler.run(server)
5661

@@ -90,6 +95,7 @@ def pyres_worker():
9095
parser.add_option("-i", '--interval', dest='interval', default=None, help='the default time interval to sleep between runs')
9196
parser.add_option('-l', '--log-level', dest='log_level', default='info', help='log level. Valid values are "debug", "info", "warning", "error", "critical", in decreasing order of verbosity. Defaults to "info" if parameter not specified.')
9297
parser.add_option('-f', dest='logfile', help='If present, a logfile will be used.')
98+
parser.add_option('-p', dest='pidfile', help='If present, a pidfile will be used.')
9399
(options,args) = parser.parse_args()
94100

95101
if len(args) != 1:
@@ -98,6 +104,8 @@ def pyres_worker():
98104

99105
log_level = getattr(logging, options.log_level.upper(), 'INFO')
100106
setup_logging(log_level=log_level, filename=options.logfile)
107+
setup_pidfile(options.pidfile)
108+
101109
interval = options.interval
102110
if interval is not None:
103111
interval = int(interval)

0 commit comments

Comments
 (0)