{"body":"import asyncdispatch, threadpool, random, math, logging, json, strutils\nimport jester\n\nvar idCounter: int\nproc newId(): int =\n  idCounter += 1\n  result = idCounter\nlet jesterPort* = 5000\n\nproc doMath(): float =\n  result = random(1000.0)\n  for i in 1..100000:\n    if result == 1.0:\n      result = random(1000.0)\n    result = sqrt(result)\n\nwhen isMainModule:\n\n  settings:\n    port = Port(jesterPort)\n\n  routes:\n\n    get \"/sample\":\n      let requestId = $newId()\n      info \"[$1] Received request.\" % requestId\n\n      let fv = spawn doMath()\n      while true:\n        if fv.isReady():\n          var\n            flowResult = ^fv\n            r = $(% flowResult)\n          # If so, execute the handler body.\n          info \"[$1] Completed request.\" % requestId\n          resp(r, contentType = \"application/json\")\n        else:\n          info \"[$1] Waiting...\" % requestId\n          # Otherwise, yield in order to return control back to the main event loop.\n          yield sleepAsync 10\n\n\n  runForever()\n","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/pCXcYeEE","modified":1502123501,"id":"pCXcYeEE","size":998,"lines":43,"own_paste":false,"theme":"","date":1502123501}