小编N A*_*N A的帖子

将 Monix `Task` 转换为 Cats `IO` 后会丢失什么?

这个简化的案例是我的问题发生在...

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比 IO
  • Task在线程调度公平性方面更加智能和自动化
  • Task 获得更多可取消选项
  • 和更多 ...

问题和我的意见

转换Monix Task成后我失去了什么Casts IO

它似乎可以正常工作,Task.gather并且timeout- 所有这些任务特定的东西。
那么我在转换中失去了什么?
如果不是,则没有理由创建一种以上的数据类型。

所以给出的差异是这意味着我失去了调度的公平性交谈后TaskIO


好吧,我应该自己验证一下,但我不知道如何测试它的公平性。

multithreading functional-programming scala scala-cats monix

8
推荐指数
1
解决办法
358
查看次数

是否有可能显示部分响应数据的谷歌表单确认消息?

我正在为即将到来的拍卖设置一个谷歌表单。当投标人到达拍卖场时,我们会让他们填写一个基本的谷歌表格(即姓名、地址、ID),并且“投标人 ID”是根据响应电子表格中的行号自动生成的。

我希望发生的是一旦提交表单,确认消息就会包含他们的“投标人 ID”。电子表格设置为将投标人 ID 放在 J 列中。这可能吗?如果需要更多信息,请告诉我。

非常感谢。本

form-submit google-apps-script google-forms

5
推荐指数
1
解决办法
3776
查看次数

Couchbase 中 REQUEST_PLUS 和 STATMENT_PLUS ScanConsistency 之间到底有什么区别?

我无法理解请求和声明之间的区别以及一致性与它们之间的关系。

consistency couchbase

5
推荐指数
1
解决办法
1311
查看次数

用开始时间和结束时间打包monix任务的最佳方法是什么?

这就是我现在正在尝试但它只打印"嘿"而不是指标.我不想在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)

scala monix

5
推荐指数
1
解决办法
467
查看次数

与代理服务器一起使用时,大型请求正文的 Netty 握手超时

我正在调用一个具有巨大正文(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)

java netty sendgrid asynchttpclient

5
推荐指数
1
解决办法
1万
查看次数

如何使用Apps脚本在Google表单中根据表单响应设置确认消息?

在谷歌表单中,使用谷歌应用程序脚本,我是否可以使用通过表单提交的值来设置确认消息,该消息将显示给已提交这些值的用户?请注意,现在默认的确认消息是"已记录响应",我知道我可以将此文本更改为其他文本,但我需要根据用户的响应操作消息.

google-apps-script google-forms

3
推荐指数
1
解决办法
4604
查看次数

任一模式匹配的替代方案

是否有以下类型的 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
推荐指数
1
解决办法
523
查看次数