Running a KNIME workflow containing Python code on a server without Python Integration installed locally

I have written a KNIME workflow that that requires Python integration and various Python modules. Eventually, I will be uploading this workflow to my work’s KNIME server, and for easier access, I wrote a batch file to open and execute the file. I am very ignorant of mixing servers and workflows, so perhaps I am misunderstanding things; however, is it possible for people to run a workflow (or batch file) through the server with just KNIME installed locally on their computers, and not Python integration?

Hi @dokubutsu,

Thanks for reaching out on the Forum! If I understand correctly, you have Python on the KNIME Server but the integration isn’t setup yet and you’d like to call an executable to call the python script.

Here’s and example workflow on calling executable using the External Tools Node

I would definitely recommend you setup the python integration as it will make life easier than deploying executables on top of the python scripts. It could also introduce security concerns to your environment.

Regards,
Wali

2 Likes

Hello Wali,
Thanks for responding! I will check out the workflow. Yes, my goal is to have the user execute a KNIME workflow containing Python script from the server (which has Python integration installed), but the user’s computer only has KNIME installed (no python integration or python modules). My goal is to make the workflow as user friendly as possible (i.e., not requiring the user to have to open KNIME), so I wanted to try distributing a batch file to execute everything from the server.

Okay that makes sense! Rather than using a batch file, you could call the workflow you want to run on the server. This way you can keep updating the workflow and not have to worry about outdated batch files.

We have the call workflow nodes, and the new call workflow service that you could place in the workflow.

Regards,
Wali

3 Likes

Excellent, I will try that as well! Thanks!

As a follow up, is it possible to run KNIME via a batch file if knime is not installed locally, but the knime.exe that is called in the .bat is accessible from some shared drive somewhere?

Hi @dokubutsu ,

Would you mind letting us know what functionality you are trying to achieve with this?

Thanks,
Zack

Hello Zack,

I developed a small data processor that many people have wanted to use; however, they do not want to install KNIME or use KNIME (moreover, installing all the python modules would be difficult). So, I added a file directory code in a python source node that prompts the user for the file(s) they want to process and then deposits the processed file on their desktop. All of this is currently done through a batch file so KNIME does not open up. I am hoping to just set up batch files on their computers that can achieve the same benefit as installing KNIME and the Python modules.

Hi @dokubutsu , based on what you described, I would suggest the following:

  1. Set up shared folders where users can drop their files to be processed
  2. Modify the workflow to read files from these shared folders instead of having to prompt the user
  3. Processed files to be deposited in shared folders where users can go get them
  4. Schedule the workflow to run every {X} interval (this can vary and be optimized based on when usually users would deposit their files)

That way:

  1. Users do not need to have Knime installed
  2. They don’t even have to run the workflow, therefore don’t even need access to Knime at all

You basically have 2 ways to schedule the workflow:

  1. Via a Knime server
    or
  2. If you don’t have a Knime server, you can create a batch (Windows) or sh (UNIX/Linux/MacOS) on wherever your Knime AP is installed and schedule the batch/sh file to run automatically via the Windows Task Scheduler or UNIX cron
2 Likes

@bruno29a, excellent idea! My work uses shared folder a lot, so this seems like an excellent solution for non-KNIME users. How would you prevent the workflow from repeatedly doing the same file? I suppose I could have python move the file to a “finished” folder after the workflow is finished.

1 Like

Hi @dokubutsu , the idea would be to move the file to somewhere else once it’s processed (may be to a folder called Archive or Processed). You should have 3 different folders: one for input (where users drop their files), one for archive (where input files are moved once processed - you may want set a retention policy such as keep files for 6 months, or keep a certain amount of files, if this can grow, and depending on the importance of the input files), and one for output (where the result file is generated by the workflow and where users collect their results)

2 Likes

If you have a KNIME Server you should consider using the Web Portal here as well. You can add a simple UI to your existing workflow really quickly to let users upload a file and hit run. The processed file could be downloaded or emails to the user at the end of the flow.

Regards,
Wali

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.