Skip to content

Default output_timout timeout is too low, allow for configuration #231

@Zeitsperre

Description

@Zeitsperre

Related discussion: #156

The team I work with have been trying to figure out a simple way to prolong the timeout for cell output as we're running into this issue in some of my testing pipelines.

Our use case is that we rely on pytest --nbval to run integration tests on several notebooks across multiple projects for a computation platform and some notebooks require a slightly longer timeout. This means that we have occasional failure/success for some notebooks, so not ideal.

We were hoping to be able to supply a timeout manually or via pytest configurations, but this appears to not be fully implemented.

Copying a comment from my colleague (@fmigneault):

I'm having a hard time understanding how the default 2000s (

nbval/nbval/plugin.py

Lines 96 to 98 in 3299cc6

group.addoption('--nbval-cell-timeout', action='store', default=2000,
type=float,
help='Timeout for cell execution, in seconds.')
) was not applied in favour of the hardcoded 5s:

self.output_timeout = 5

Looking at the code, it seems like the timeout is used to get the initial message, but is never actually employed to get the long output:

nbval/nbval/plugin.py

Lines 606 to 631 in 3299cc6

timeout = self.config.option.nbval_cell_timeout
timed_out_this_run = False
# Poll the shell channel to get a message
try:
self.parent.kernel.await_reply(msg_id, timeout=timeout)
except Empty: # Timeout reached
# Try to interrupt kernel, as this will give us traceback:
kernel.interrupt()
self.parent.timed_out = True
timed_out_this_run = True
# This list stores the output information for the entire cell
outs = []
# TODO: Only store if comparing with nbdime, to save on memory usage
self.test_outputs = outs
# Now get the outputs from the iopub channel
while True:
# The iopub channel broadcasts a range of messages. We keep reading
# them until we find the message containing the side-effects of our
# code execution.
try:
# Get a message from the kernel iopub channel
msg = self.parent.get_kernel_message(timeout=self.output_timeout)

We're wondering if there is a maybe an undocumented method to modify the notebook cell timeout or perhaps the fix mentioned in #156 could be reconsidered.

Context: Ouranosinc/PAVICS-e2e-workflow-tests#171

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions