簡體   English   中英

Play Framework 2.1 - 找不到隱式的 ExecutionContext

[英]Play Framework 2.1 - Cannot find an implicit ExecutionContext

我正在調用這樣的網絡服務:

WS
  .url(url)
  .get
  .map { response => // error occurs on this line
    response.status match {
      case 200 => Right(response.json)
      case status => Left(s"Problem accessing api, status '$status'")
  }
}

完整的錯誤: Error: Cannot find an implicit ExecutionContext, either require one yourself or import ExecutionContext.Implicits.global

根據此問題,它已在文檔中修復。 我需要添加以下導入:

import play.api.libs.concurrent.Execution.Implicits._

從 Play 2.6 開始,建議對execution context使用 guice 依賴注入。

默認執行上下文注入:

富斯卡

class Foo @Inject()()(implicit ec:ExecutionContext) {

def bar() = {
   WS.url(url)
     .get
     .map { response => // error occurs on this line
       response.status match {
         case 200 => Right(response.json)
         case status => Left(s"Problem accessing api, status '$status'")
     }
   }
}

自定義執行上下文注入:

應用程序配置文件

# db connections = ((physical_core_count * 2) + effective_spindle_count)
fixedConnectionPool = 9

database.dispatcher {
  executor = "thread-pool-executor"
  throughput = 1
  thread-pool-executor {
    fixed-pool-size = ${fixedConnectionPool}
  }
}

數據庫執行上下文.scala

@Singleton 
class DatabaseExecutionContext @Inject()(system: ActorSystem) extends CustomExecutionContext(system,"database.dispatcher")

富斯卡

class Foo @Inject()(implicit executionContext: DatabaseExecutionContext ) {   ...    }

更多信息請訪問:

https://www.playframework.com/documentation/2.6.x/Migration26#play.api.libs.concurrent.Execution-is-deprecated https://www.playframework.com/documentation/2.6.x/Highlights26#CustomExecutionContext -and-Thread-Pool-Sizing

另一種選擇:

import scala.concurrent.ExecutionContext.Implicits.global

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM