这个简化的案例是我的问题发生在...
object Main extends IOApp{
def run(args:Seq[String]): IO[ExitCode]={
Task{...}
.to[IO]
.as(ExitCode.Success)
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是Await.result(task),但是这听起来不太符合IOApp的做法。
根据这个伟大的帖子Monix vs Cats Effect
我看到之间Task IO的差异是:
Task API比 IOTask在线程调度公平性方面更加智能和自动化Task 获得更多可取消选项转换Monix Task成后我失去了什么Casts IO?
它似乎可以正常工作,Task.gather并且timeout- 所有这些任务特定的东西。
那么我在转换中失去了什么?
如果不是,则没有理由创建一种以上的数据类型。
所以给出的差异是这意味着我失去了调度的公平性交谈后Task到IO?
好吧,我应该自己验证一下,但我不知道如何测试它的公平性。
multithreading functional-programming scala scala-cats monix
我正在为即将到来的拍卖设置一个谷歌表单。当投标人到达拍卖场时,我们会让他们填写一个基本的谷歌表格(即姓名、地址、ID),并且“投标人 ID”是根据响应电子表格中的行号自动生成的。
我希望发生的是一旦提交表单,确认消息就会包含他们的“投标人 ID”。电子表格设置为将投标人 ID 放在 J 列中。这可能吗?如果需要更多信息,请告诉我。
非常感谢。本
我无法理解请求和声明之间的区别以及一致性与它们之间的关系。
这就是我现在正在尝试但它只打印"嘿"而不是指标.我不想在main函数中添加与度量相关的东西.
import java.util.Date
import monix.eval.Task
import monix.execution.Scheduler.Implicits.global
import scala.concurrent.Await
import scala.concurrent.duration.Duration
class A {
def fellow(): Task[Unit] = {
val result = Task {
println("hey")
Thread.sleep(1000)
}
result
}
}
trait AA extends A {
override def fellow(): Task[Unit] = {
println("AA")
val result = super.fellow()
val start = new Date()
result.foreach(e => {
println("AA", new Date().getTime - start.getTime)
})
result
}
}
val a = new A with AA
val res: Task[Unit] = a.fellow()
Await.result(res.runAsync, Duration.Inf)
Run Code Online (Sandbox Code Playgroud) 我正在调用一个具有巨大正文(html)的电子邮件营销服务。主体大小 = 117184。
我正在使用 AsyncHttpClient,它使用 Netty 作为背景。
当我直接调用请求时,它是成功的,但当我尝试使用内部 https 代理服务器时,它会失败并出现以下异常。但是带有代理服务器的小型机构可以正常工作。以下是斯卡拉代码:
val client = asyncHttpClient(config().setProxyServer(proxyServer("XX-XYXY-100X.XXXX.local", 8080)))
val whenResponse = client.preparePost("https://api.sendgrid.com/v3/mail/send")
.addHeader("Authorization", "Bearer XXXXXXXXX")
.addHeader("Content-Type", "application/json")
.setBody(randomBody)
.execute
.get(1000, TimeUnit.SECONDS)
Run Code Online (Sandbox Code Playgroud)
基本上 :
对于使用代理服务器的大型请求,我看到以下异常。
Exception in thread "main" java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: handshake timed out
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
at org.asynchttpclient.netty.NettyResponseFuture.get(NettyResponseFuture.java:207)
at send.RequestSender$.send1(RequestSender.scala:27)
at send.RequestSender$.delayedEndpoint$send$RequestSender$1(RequestSender.scala:47)
at send.RequestSender$delayedInit$body.apply(RequestSender.scala:14)
at scala.Function0.apply$mcV$sp(Function0.scala:34)
at scala.Function0.apply$mcV$sp$(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App.$anonfun$main$1$adapted(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:389)
at scala.App.main(App.scala:76)
at scala.App.main$(App.scala:74)
at send.RequestSender$.main(RequestSender.scala:14)
at send.RequestSender.main(RequestSender.scala)
Caused by: javax.net.ssl.SSLException: handshake timed out
at …Run Code Online (Sandbox Code Playgroud) 在谷歌表单中,使用谷歌应用程序脚本,我是否可以使用通过表单提交的值来设置确认消息,该消息将显示给已提交这些值的用户?请注意,现在默认的确认消息是"已记录响应",我知道我可以将此文本更改为其他文本,但我需要根据用户的响应操作消息.
是否有以下类型的 Either 模式匹配?像 Right 和 Left 上的 map 一样返回不同类型的 Either 。我不想到处指定左和右。
val v:Either[Throwable, String] = Right("Hello")
val result: Either[Int, String] = v match {
case Left(ex) => Left(ex.getMessage.size)
case Right(m) => Right(m)
}
Run Code Online (Sandbox Code Playgroud) scala ×3
google-forms ×2
monix ×2
consistency ×1
couchbase ×1
form-submit ×1
java ×1
netty ×1
scala-cats ×1
sendgrid ×1