Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

4
  • Thanks, looks like the Services approach would work. I dont want the context to be completely global, but just accessible by all nodes. What if the first node was a file generator (yields file objects) then second node is record extractor (yeilds records from file), and I want to be able to access the corresponding file object in every node after the File Generator node? MIght be easiest to have the file-generator loop outside Bonobo graph completely and just have first node as Record Extractor, and provide file as service to graph? Commented Jun 6, 2019 at 14:28
  • I think the approach work, but not after the record extractor. I can't see why you would want the file object after this place, especially because sharing objects between threads like this can be (well, is) very dangerous. Also, I would tend to pass filenames instead of file objects from one node to another so the node responsible for file operations can handle it correctly (like a context manager, with a finally: close()) Commented Jun 6, 2019 at 15:15
  • It's because each node is a transformation that may want to use attributes associated with the file object, as well as each record Commented Jun 7, 2019 at 14:59
  • I think you'd be better of by having some kind of "file metadata" object created from the file object, handle the file cleanly in one node and only use the (readonly) metadata in the other nodes. Using python file objects with random open/close timings and overall file handle availability in nodes that run . in an unpredictable order would for sure bring you into trouble at some point. Commented Jun 10, 2019 at 7:21