Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Turris
Sentinel
sn
Commits
e70be51b
Commit
e70be51b
authored
May 26, 2018
by
Robin Obůrka
Committed by
Robin Obůrka
Jun 04, 2018
Browse files
msgloop: Provide before_first_request feature
parent
d16bbc90
Changes
1
Hide whitespace changes
Inline
Side-by-side
sn/msgloop.py
View file @
e70be51b
...
...
@@ -24,7 +24,7 @@ class LoopFail(Exception):
pass
def
sn_main
(
box_name
,
process
,
setup
=
None
,
teardown
=
None
,
argparser
=
None
):
def
sn_main
(
box_name
,
process
,
setup
=
None
,
teardown
=
None
,
before_first_request
=
None
,
argparser
=
None
):
sn_ctx
=
SN
(
zmq
.
Context
.
instance
(),
argparser
or
get_arg_parser
())
context
=
None
...
...
@@ -36,7 +36,8 @@ def sn_main(box_name, process, setup=None, teardown=None, argparser=None):
logger
.
info
(
"SN main starting loop for %s box"
,
box_name
)
register_signals
(
context
)
_sn_main_loop
(
context
,
process
)
_sn_main_loop
(
context
,
before_first_request
,
process
)
except
LoopHardFail
as
e
:
logger
.
error
(
"Hard Fail of box: %s"
,
context
.
name
)
...
...
@@ -124,12 +125,17 @@ def teardown_context(context):
context
.
zmq_ctx
.
destroy
()
def
_sn_main_loop
(
context
,
process
):
def
_sn_main_loop
(
context
,
before_first_request
,
process
):
if
inspect
.
isgeneratorfunction
(
process
):
get_processed_message
=
processed_message_from_generator
(
context
,
process
)
else
:
get_processed_message
=
processed_message_from_function
(
context
,
process
)
if
before_first_request
:
result
=
before_first_request
(
context
)
if
result
:
process_result
(
context
.
socket_send
,
result
)
while
context
.
loop_continue
:
try
:
result
=
get_processed_message
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment