Hi there! I've been porting some python code I had using inngest, and some other built with queues,

Hi there! I've been porting some python code I had using inngest, and some other built with queues, and I have a bunch of feedback that might be useful.

For reference, the code that I've migrated to workflows usually does something like this:
  • fetches a bunch of resources from the DB
  • (fanout) for each resource it does an http call to an API and then it saves some data to the DB
  • (fanin) once everything is done, it makes more changes to the DB
I think this is the more straightforward kind of workflow you can imagine, and yet, I've found some shortcomings implementing them on Cloudflare:

  • The 256 step limit means that I can't build this as a single workflow. I have to add a queue to implement the "fanout". The alternative is to do a Promise.allSettled, but then you don't get to retry failed workflow creation.
  • The http call has a rate limit, and unlike queues, there is no way to specify concurrency/batch size. Since I moved the "fanout" to a queue, this is where I implement the rate limit, but it would be great to be able to describe the whole workflow without queues.
  • Because of moving the fanout to queues, there is no way to do the fanin part since it can't be known when all the queues have been processed.
  • There is no way to compose workflows. This means that if you have a piece of workflow that is used in several places, you have to abstract away the steps. It would be great if workflows could return values so a workflow could call another workflow like a step.
Cheers,
Pao
Was this page helpful?