Comments (5)
@gcanti this the equivalent with Akka Streams which throttles based on the elements:
import akka.stream.scaladsl._
import akka.actor.ActorSystem
import akka.stream.ThrottleMode
import scala.concurrent.ExecutionContextExecutor
import scala.concurrent.duration.DurationInt
object Main extends App {
implicit val system: ActorSystem = ActorSystem("Throttling")
implicit val ec: ExecutionContextExecutor = system.dispatcher
Source.fromIterator(() => Iterator.from(0))
.mapConcat(i => List(i, i))
.throttle(1, 500.millis, 1, ThrottleMode.Shaping)
.runForeach(i => println(i))
.onComplete(_ => system.terminate())
}
from effect.
@janory I'm far from being an expert on the Stream
module, I'll let @tim-smart chime in
from effect.
The cost
function takes the incoming Chunk, and allows you to specify the cost. In this case you could use the chunk.length
as the cost.
from effect.
You could also use Stream.rechunk(1)
if you only want to process single item chunks.
from effect.
@gcanti @tim-smart thanks for the quick reply.
The cost function takes the incoming Chunk, and allows you to specify the cost. In this case you could use the chunk.length as the cost.
Setting the cost to the Chunk's length didn't work:
import { Effect, Console, Stream, Sink, Schedule, Duration } from "effect";
const runnableStream = Stream.fromSchedule(Schedule.spaced(Duration.millis(100))).pipe(
Stream.mapConcat(a => [a, a]),
Stream.throttle({duration: `500 millis`, cost: c => c.length, units: 1, burst: 1, strategy: 'shape'}),
Stream.runForEach(Console.log)
);
Effect.runPromise(runnableStream);
This ☝️ still emits the elements in pairs.
But Stream.rechunk(1)
did the trick. 👍
from effect.
Related Issues (20)
- Showing help documentation does not respect `CliConfig.showBuiltIns` HOT 1
- schema struct with `fields` property is not valid
- From Discord: RuntimeException: @effect/rpc: handler must return an array of responses with the same length as the
- From Discord: Type Error in `schema.minItems` vs. `schema.maxItems` Usage
- Cli: Add file picker to wizard mode
- From Discord: Trouble Generating JSON Schema with `JSONSchema.make` for Parsed Schemas
- Match: `withReturnType` fails with union types in matcher chains
- Add Drizzle ORM support to @effect/sql-drizzle
- From Discord: Proposal: Rename to More Familiar Terms
- Support dark mode in api docs HOT 1
- From Discord: Schema Partial with Nullable Option
- Unsupported schema Error while applying Partial to Schema class HOT 4
- From Discord: Unifying Key and Value Schema Passing in `Schema.Record` and `Schema.{Hash,}Map` HOT 2
- From Discord: Confusion Over Schema.NonEmpty Naming for NonEmptyString Implementation
- From Discord: Rationale Behind Including Titles and Descriptions in JSON Schema Definitions
- From Discord: Transforming POJO with BigInt Keys to ReadonlyMap: Type Issue Solutions HOT 1
- From Discord: Alternative Method to Extract Case Type from `Data.TaggedEnum`
- From Discord: Runtime Error When Extending Object with Optional Keys in TypeScript
- Data.Error/TaggedError swallows cause when logged
- From Discord: Implementing AWS Lambda with `effect-http` Similar to `hono`
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 effect.