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)
- Schema.TaggedError doesn't have nicely formatted cause when logged to console (unlike Data.TaggedError)
- Add new Order.localeString ordering option
- Predicate.or should handle refinements as Predicate.and does
- Logged errors only show the first child cause instead of displaying error causes recursively
- RPC File support
- From Discord: Confusion Over Multiple Documentation Versions for Effect-TS API
- From Discord: Schema base64 string -> utf8 string -> json parse
- Suggestion: improve DX of type errors from inside `pipe` and `flow`
- From Discord: Accumulating Incomplete JSON Chunks from a ReadableStream
- Enhance sum type workflow (Data.taggedEnum)
- Cause.UnknownException causes exception when using Bun
- JSONSchema.make does not have same behaviour as JSONSchema.to => erasing properties & not working for some Schema types HOT 7
- Effect.Tag with non Effect-returning functions
- From Discord: TypeScript Type Incompatibility Issue with Generic Schema and Optional Values
- Move type helpers from nested namespace to the top-level namespace HOT 4
- From Discord: decode error which should be caught at compile time
- From Discord: Resolving Kysely Integration Issues in Effect with SqlResolver HOT 1
- Generate Mermaid class diagram (or expose DAG) from schema HOT 7
- From Discord: Limitations of `S.TemplateLiteral` Schema Support and the Case for Broader Transform Compatibility
- RuntimeException: Cannot execute an Effect versioned 3.5.6 with a Runtime of version 3.4.7 HOT 4
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.