def get_bar_repo_grpc_repository_location_handle(): return RepositoryLocationHandle.create_process_bound_grpc_server_location( loadable_target_origin=LoadableTargetOrigin( attribute='bar_repo', python_file=file_relative_path(__file__, 'api_tests_repo.py'), ), location_name='bar_repo', )
def get_giant_repo_grpc_repository_location_handle(): handle = RepositoryLocationHandle.create_process_bound_grpc_server_location( loadable_target_origin=LoadableTargetOrigin( attribute="giant_repo", module_name="dagster_tests.api_tests.test_api_snapshot_repository", ), location_name="giant_repo_location", ) try: yield handle finally: handle.cleanup()
def get_bar_repo_grpc_repository_location_handle(): handle = RepositoryLocationHandle.create_process_bound_grpc_server_location( loadable_target_origin=LoadableTargetOrigin( attribute="bar_repo", python_file=file_relative_path(__file__, "api_tests_repo.py"), ), location_name="bar_repo", ) try: yield handle finally: handle.cleanup()
def get_external_pipeline_from_managed_grpc_python_env_repository(pipeline_name): repository_location_handle = RepositoryLocationHandle.create_process_bound_grpc_server_location( loadable_target_origin=LoadableTargetOrigin( attribute="nope", python_file=file_relative_path(__file__, "test_default_run_launcher.py"), ), location_name="nope", ) repository_location = GrpcServerRepositoryLocation(repository_location_handle) try: yield repository_location.get_repository("nope").get_full_external_pipeline(pipeline_name) finally: repository_location_handle.cleanup()
def get_external_pipeline_from_managed_grpc_python_env_repository(pipeline_name): repository_location_handle = RepositoryLocationHandle.create_process_bound_grpc_server_location( loadable_target_origin=LoadableTargetOrigin( attribute='nope', python_file=file_relative_path(__file__, 'test_cli_api_run_launcher.py'), ), location_name='nope', ) repository_location = GrpcServerRepositoryLocation(repository_location_handle) yield repository_location.get_repository('nope').get_full_external_pipeline(pipeline_name)
def test_terminate_after_shutdown(): with grpc_instance() as instance: repository_location_handle = RepositoryLocationHandle.create_process_bound_grpc_server_location( loadable_target_origin=LoadableTargetOrigin( attribute="nope", python_file=file_relative_path(__file__, "test_cli_api_run_launcher.py"), ), location_name="nope", ) repository_location = GrpcServerRepositoryLocation(repository_location_handle) external_pipeline = repository_location.get_repository("nope").get_full_external_pipeline( "sleepy_pipeline" ) pipeline_run = instance.create_run_for_pipeline( pipeline_def=sleepy_pipeline, run_config=None ) launcher = instance.run_launcher launcher.launch_run(instance, pipeline_run, external_pipeline) poll_for_step_start(instance, pipeline_run.run_id) # Tell the server to shut down once executions finish repository_location_handle.client.cleanup_server() # Trying to start another run fails doomed_to_fail_external_pipeline = repository_location.get_repository( "nope" ).get_full_external_pipeline("math_diamond") doomed_to_fail_pipeline_run = instance.create_run_for_pipeline( pipeline_def=math_diamond, run_config=None ) with pytest.raises(DagsterLaunchFailedError): launcher.launch_run( instance, doomed_to_fail_pipeline_run, doomed_to_fail_external_pipeline ) # Can terminate the run even after the shutdown event has been received assert launcher.can_terminate(pipeline_run.run_id) assert launcher.terminate(pipeline_run.run_id)