Repository navigation
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #717
Problem
Local test mode (
--test_inputortest_input.json) runs every handler throughrun_job, so a generator handler is never iterated. The worker and the local API server already branch onis_generator.Fix
run_localbranches onis_generatorthe same way_sim_runsyncdoes. It iteratesrun_job_generator, collects the chunks into{"output": [...]}, and stops at the first chunk that carries anerror, which the existing error branch logs before exiting 1. The output is always the list of chunks, as in the local API server, because there is no stream endpoint to send them to locally. Non-generator handlers are unchanged.Tests
Four tests in
tests/test_serverless/test_modules/test_local.py, all failing without this change:{'output': ['chunk 0', 'chunk 1', 'chunk 2']}and the exit code is 0;test_output.Before and after
python handler.py --test_input '{"input":{"x":1}}'with handlers yieldingchunk 0tochunk 2:Job result: {'output': <generator object handler at 0x...>}, exit 0Job result: {'output': ['chunk 0', 'chunk 1', 'chunk 2']}, exit 0Job result: {'output': <async_generator object handler at 0x...>}, exit 0Job result: {'output': ['chunk 0', 'chunk 1', 'chunk 2']}, exit 0chunk 0, then raisesValueError("boom")Job local_test failed with error: handler: boom, exit 1