This site uses different types of cookies, including analytics and functional cookies (its own and from other sites). To change your cookie settings or find out more, click here. If you continue browsing our website, you accept these cookies.
I've build a python tool with one input and one output, staying close to the "Python - Multiple InputsEngine" example in https://github.com/alteryx/python-sdk-samples. (the tool has to read in all the data before processing can start)
When I use the tool with no output anchor connected to a following tool, everything works fine.
But as soon as I connect another tool (e.g. browsing) I get the error:
"Error: Designer x64: The Designer x64 reported: InboundNamedPipe::ReadFile: Not enough bytes read. The Pipe has been closed"
If I connect a filter instead, I get the following error for different tools even for tools not connected to the workflow (like a text input tool):
"Error: Text Input (6): Internal Error: BrowseEverywhereIIFactory::Reserve() - Tool: 6 - Reserve called again after GetII has been called once"
Any ideas how to solve it?
I attached a strip down version of the tools core python script.
In addition, just looking at your sample code, I do have one suggestion. Alteryx actually will end up calling the code in your tool in update only mode, during config, where it only processes the metadata and does not actually push any records. Does the error you are seeing occur only during 'Run' or does it show up even during just configuring the tools on the workflow?
If it shows up during configuring the tool in a workflow, you probably need to block calls that may try and output empty records. To do this, all you should need to do is add the following if block to your code:
if self.alteryx_engine.get_init_var(self.n_tool_id, 'UpdateOnly') == 'True':
I would add that to the top your ii_push_record and ii_close methods, so they do not try and push any invalid records to output, during 'UpdateOnly' mode.