Generic integration
VIKTOR offers a generic integration, which can be used to integrate with any software package that supports
command-line interaction. The GenericAnalysis
class
is used for this, which requires one or multiple input files. Furthermore, you need to specify an executable_key
to
instruct the worker to call a specific task as defined in the configuration file (config.yaml
).
VIKTOR's generic integration requires a Generic worker.
from viktor.external.generic import GenericAnalysis# Generate the input file(s)files = [ ('input1.txt', BytesIO(b'filecontent1')), ('input2.txt', BytesIO(b'filecontent2'))]# Run the analysis and obtain the output file.generic_analysis = GenericAnalysis(files=files, executable_key="some_executable", output_filenames=["output.txt"])generic_analysis.execute(timeout=60)output_file = generic_analysis.get_output_file("output.txt")
caution
GenericAnalysis.execute
needs to be
mocked within the context of (automated) testing.
The executable_key
in the example above refers to the "some_executable" command. This command should also be
specified in the configuration file on the server, located in the same directory as the worker:
config.yaml
executables:
some_executable:
path: 'C:\path\to\executable.exe'
arguments:
- '-arg1'
- '-arg2'
- '-arg3'
workingDirectoryPath: 'C:\path\to\script'
maxParallelProcesses: 1 # must be one, please do not change
note
The worker reads the config file once during startup. So when you change the config file, you will need to restart the worker for your changes to take effect.
With this setup, we can basically run any third-party software which supports command-line execution. A few specific examples are provided in the guides below:
And many more!