Comments (10)
@joshjordan use map to collect all the ids that each run
returns and pass them to after:
option
from gush.
I guess this line in client.rb
file is the issue here:
job_names.map {|name| workflow.find_job(name) }
from gush.
Yeah, this wasn't a feature I needed in Gush when I developed it, but I can have a look. It should probably generate UUIDs for jobs, instead of relying on their (not unique as it turns out) names.
from gush.
I've changed some lines in the code and I almost got it working based on UUIDs, but changing the tests specs is not something that I like very much..
from gush.
I've been able to come to this: https://github.com/ferusinfo/gush/commits/unique_node_names - the only issue that I am having now is that redis isn't persisting all the jobs created in a queue (getting a workflow through new instance of Gush::Client.new
it is only returning the last job).
from gush.
So now, when you merged the changes, is there any way to add me to the contributors section?
from gush.
Sure :)
from gush.
@ferusinfo how would I do this if the number of jobs is variable? What if it looked like this, from your example?
class FetchPricesWorkflow < Gush::Workflow
def configure
start_time = DateTime.now
#pages is unknown when the flow begins
run FetchPageCountJob
#somehow get pages...
for i in 0..pages
run FetchPricesJob, params: { page_num: i }
end
run SummaryJob, after: FetchPricesJob, params: {start_time: start_time}
end
from gush.
thanks to suggestion @pokonski
I made it like this
class MyWorkflow < Gush::Workflow
def configure(post_id, comment_ids)
# multiple jobs in parallel
job_ids = []
comment_ids.each do |id|
job_ids << (run RemoveCommentJob, params: { comment_id: id })
end
# after all jobs RemoveCommentJob finished
run RemovePostJob, after: job_ids, params: {post_id: post_id}
end
end
run workflow:
post_id=1
comment_ids = post.comments.pluck(:id)
flow = MyWorkflow.create(post_id, comment_ids)
flow.start!
from gush.
Closing since it was solved :)
from gush.
Related Issues (20)
- Allow redis 5 HOT 1
- Update Redis gem HOT 1
- Make gush handle wokflows with 1000s of jobs HOT 13
- Many mutex fails after #49000a30fd34ac21cabdc7d HOT 9
- Activejob callbacks not available in the Gush::Job
- Long-running jobs and human job completion HOT 11
- Jobs that eventually succeed will not queue downstream jobs HOT 6
- Gush.configure with namespace issue HOT 3
- Can we run same workflow parallelly with different arguments? HOT 1
- bundle exec viz workflow with parameters HOT 6
- Shortcircuit workflows HOT 16
- Cannot assign requested address - connect(2) for [::1]:6379 HOT 12
- Overlapping workflows HOT 1
- Update Gem on RubyGems HOT 3
- Project status HOT 8
- Can I create a dynamic workflow based on job's output? HOT 1
- Project Idea - Web UI HOT 1
- cannot create workflow instance HOT 2
- Dead Link to "Parallelizing Operations With Dependencies" by Stephen Toub
- Polling scenario in job HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gush.