我正在尝试使用fs2.io.writeOutputStream来输出到Java AWS lambda fn。我不知道如何提供它正在寻找的隐式参数:
“找不到参数cs的隐式参数:ContextShift [IO]”
我找到了一些documentation来创建自己的隐式ContextShift对象,但这似乎对我尝试做的事情有些过分。
final def handleRequest(in: InputStream, out: OutputStream, context: Context): Unit = (for {
bytes <- in.compile.toList
str = getString(bytes)
args <- decode(str).raiseIO
_ <- produce(args).to(writeOutputStream(IO(out), global)).compile.drain
} yield Unit).unsafeRunAsyncAndForget() // throws exception in the case of Failure
// ------------------------------------------------
// produce(args: MyCaseClass): fs2.Stream[IO, Byte]
答案 0 :(得分:2)
“默认情况下,Cats Effect可以提供ContextShift [IO]实例来管理线程池,但前提是范围内存在ExecutionContext或使用IOApp。”
-猫效果documentation。
ExecutionContext
。import cats.effect.{IO, ContextShift}
import scala.concurrent.ExecutionContext.Implicits.global
val contextShift = IO.contextShift(global)
IOApp
。import cats.effect.{IO, IOApp, ContextShift}
object Main extends IOApp {
override def run(args: List[String]): IO[ExitCode] = {
val cs = implicitly[ContextShift[IO]]
}
}