小编Isa*_*moc的帖子

使用Action.async有什么影响,因为Play使用非阻塞的Netty

由于Netty是一个非阻塞服务器,将操作更改为使用会产生什么影响.async

def index = Action { ... }
Run Code Online (Sandbox Code Playgroud)

def index = Action.async { ... }
Run Code Online (Sandbox Code Playgroud)

我明白,.async你会得到一个Future[SimpleResult].但是既然Netty没有阻止,那么Play会不会做类似的事情呢?

这会对吞吐量/可扩展性产生什么影响?这是一个难以回答的问题,它取决于其他因素吗?

我问的原因是,我有自己的自定义Action,我想重置每个页面请求的cookie超时,所以我这样做是一个async调用:

object MyAction extends ActionBuilder[abc123] {
  def invokeBlock[A](request: Request[A], block: (abc123[A]) => Future[SimpleResult]) = {
    ...
    val result: Future[SimpleResult] = block(new abc123(..., result))
    result.map(_.withCookies(...))
  }
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码片段拿走是我使用的Future[SimpleResult],这类似于调用,Action.async但这是在我的Action内部吗?

我想了解这会对我的应用程序设计产生什么影响.似乎只是为了能够在每个请求的基础上设置我的cookie,我已经从阻塞变为非阻塞.但是我很困惑,因为Netty没有阻塞,也许我真的没有改变现实,因为它已经是异步的?

或者我只是创建了另一个嵌入另一个异步调用?

希望有人能够通过一些细节来阐明这一点,以及这将在性能/吞吐量方面产生的影响.

asynchronous scala netty playframework

15
推荐指数
1
解决办法
5063
查看次数

玩!2.2.4/Akka:一起运行时测试失败,但单独确定

我有一个控制器,ask在回答之前是一个演员和两个测试用例:

  • 当我运行play test第二次测试失败
  • 当我运行play testOnly ApplicationSpecplay testOnly IntegrationSpec,既成功

我认为Akka系统在第一次测试时关闭,第二次测试没有再次启动,但为什么呢?我该如何解决这个问题?

控制器:

object Application extends Controller {
  implicit val _ = Timeout(3 seconds)
  val gamesManagerRef = Akka.system().actorOf(GamesManager.props)

  def index = Authenticated.async { implicit request =>
    (gamesManagerRef ? GamesManager.ListWaitingGames).map {
      case GamesManager.MultipleOperationOk(games) =>
        Ok(views.html.index(GameInformation.getWaitings(request.jedis)))
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

单元测试:

class ApplicationSpec extends Specification {

  "Application" should {

    "send 404 on a bad request" in new WithApplication{
      route(FakeRequest(GET, "/boum")) must beNone
    }

    "render the index page" in …
Run Code Online (Sandbox Code Playgroud)

testing scala akka playframework playframework-2.2

9
推荐指数
1
解决办法
2393
查看次数

如何在jQuery中将id传递给$ .click

我有以下代码

<a  href="#example" id="showtext">view text</a>

    $("#showtext").click (function () {
        $.post('/app/foo/bar/1', function (data){
           $("#msg").html(data);
        });
        $('#example').modal()
    });
Run Code Online (Sandbox Code Playgroud)

view text点击我正在做一个POST请求出去/app/foo/bar/1,并把这些数据在一个div id为#msg.所有这一切都运行正常,但是,现在我希望能够传递不同ids的这个URL,例如:/app/foo/bar/2或者/app/foo/bar/3等等.

有什么好办法来实现这个目标?

我想到的一种方法是将id附加到属性,如下所示:

<a href="#example" id="showtext${id}">view text</a>
Run Code Online (Sandbox Code Playgroud)

然后id使用正则表达式解析jQuery中的jQuery.但是,这种方法看起来很混乱.是否有更优雅的方式来实现这一目标?

ajax jquery

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

注释行O_o中的异常

我有这个:

<!--   <div class="fieldcontain ${hasErrors(bean: azafataInstance, field: 'localidad', 'error')} required" style="margin-left: 10px">-->
<!--<label for="localidad">Localidad</label>    -->
<!--<g:if test="${params?.localidad }">-->
<!--<g:select id="localidad" title="${g.message(code: 'infoPersonal.localidad')}" name="localidad" value="${params?.localidad}" from="${[' ',params.localidad]}" noSelection="${['':message(code:'localidadSelect')]}" onClick="this.style.color='black'" onFocus="this.style.color='black'" style="max-width:168px" />-->
<!--</g:if>-->
<!--<g:else>-->
<!--<g:select id="localidad" title="${g.message(code: 'infoPersonal.localidad')}" name="localidad" value="${params?.localidad}" from="${['']}" noSelection="${['':message(code:'localidadSelect')]}" onClick="this.style.color='black'" onFocus="this.style.color='black'" style="max-width:168px"  />-->
<!--</g:else>-->
<!--</div>-->
Run Code Online (Sandbox Code Playgroud)

如你所见......行被评论.我运行该项目,我得到了这个:

URI
/com.publidirecta.azafatas/azafataCertificada/registro_page
Class
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
Message
Tag [else] cannot have non-whitespace characters directly preceding it.

Around line 95 of grails-app/views/azafataCertificada/registro.gsp

92:<!--<g:if test="${params?.localidad }">-->
93:<!--<g:select id="localidad" title="${g.message(code: 'infoPersonal.localidad')}" name="localidad" value="${params?.localidad}" from="${[' ',params.localidad]}" noSelection="${['':message(code:'localidadSelect')]}" onClick="this.style.color='black'" …
Run Code Online (Sandbox Code Playgroud)

grails

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