diff --git a/zipline/core/monitor.py b/zipline/core/monitor.py index eae70ae7..d3a831f1 100644 --- a/zipline/core/monitor.py +++ b/zipline/core/monitor.py @@ -6,7 +6,7 @@ import time import itertools import logbook from setproctitle import setproctitle -from signal import SIGHUP, SIGINT +from signal import SIGHUP, SIGINT, SIGKILL, signal from collections import OrderedDict, Counter diff --git a/zipline/protocol.py b/zipline/protocol.py index a8369167..efe85100 100644 --- a/zipline/protocol.py +++ b/zipline/protocol.py @@ -129,6 +129,8 @@ from utils.date_utils import EPOCH, UN_EPOCH, epoch_now # Control Protocol # ----------------------- +PRODUCTION_PREFIXES = ['PERF', 'RISK', 'EXCEPTION', 'CANCEL'] + INVALID_CONTROL_FRAME = FrameExceptionFactory('CONTROL') CONTROL_STATES = Enum( @@ -532,6 +534,14 @@ def EXCEPTION_FRAME(exception_tb): return BT_UPDATE_FRAME('EXCEPTION', result) +def CANCEL_FRAME(date): + result = { + 'date' : EPOCH(date) + } + + return BT_UPDATE_FRAME('CANCEL', result) + + def BT_UPDATE_FRAME(prefix, payload): """ Frames prepared by RISK_FRAME and PERF_FRAME methods are sent via the same