Skip to content

Commit

Permalink
run event handler registered by strategy after running system handler
Browse files Browse the repository at this point in the history
  • Loading branch information
Cuizi7 committed Dec 4, 2018
1 parent 8840e2f commit 9f09df5
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
2 changes: 1 addition & 1 deletion rqalpha/api/api_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -940,4 +940,4 @@ def get_position(order_book_id, direction):
)
def subscribe_event(event_type, handler):
env = Environment.get_instance()
env.event_bus.add_listener(event_type, handler)
env.event_bus.add_listener(event_type, handler, user=True)
12 changes: 8 additions & 4 deletions rqalpha/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,23 @@ def __repr__(self):
class EventBus(object):
def __init__(self):
self._listeners = defaultdict(list)
self._user_listeners = defaultdict(list)

def add_listener(self, event_type, listener):
self._listeners[event_type].append(listener)
def add_listener(self, event_type, listener, user=False):
(self._user_listeners if user else self._listeners)[event_type].append(listener)

def prepend_listener(self, event_type, listener):
self._listeners[event_type].insert(0, listener)
def prepend_listener(self, event_type, listener, user=False):
(self._user_listeners if user else self._listeners)[event_type].insert(0, listener)

def publish_event(self, event):
for listener in self._listeners[event.event_type]:
# 如果返回 True ,那么消息不再传递下去
if listener(event):
break

for listener in self._user_listeners[event.event_type]:
listener(event)


class EVENT(Enum):
# 系统初始化后触发
Expand Down

0 comments on commit 9f09df5

Please sign in to comment.