Language แอพไม่ออกถึงแม้ว่าในอนาคตคือเสร็จสมบูรณ์

0

คำถาม

ฉันรอสำหรับอนาคตที่สมบูรณ์และพิมพ์เนื้อหาบนคอนโซล. แม้แต่ตอนที่ทุกอย่างมันเสร็จแล้วหลักของโปรแกรมไม่ได้ทางออกและฉันจำเป็นต้องฆ่ามันด้วยตัวคุณเอง

def main(args: Array[String]): Unit {
    val req = HttpRequest(GET, myURL)
    val res = Http().singleRequest(req)
    val resultsFutures = Future {
        val resultString = Await.result(HttpRequests.unpackResponse(res), Duration.Inf)
        JsonMethods.parse(resultString).extract[List[Results]]
    }
    val results = Await.result(resultsFutures, Duration.Inf)
    println(results)
}

ดังนั้น results จะถูกพิมพ์บนคอนโซลกับที่คาดหวัง contend แต่โปรแกรมที่ยังไม่จบ มีบางอย่างที่ฉันสามารถทำเพื่อออกจากการนำเสนอภาพของโปรแกรม? มีบางอย่างยังคงวิ่งนั่นหลักคือรอ?

ฉันกำลังใช้:

  • language 2.12.10
  • akka 2.5.26
  • akkaHttp 10.1.11
akka akka-http concurrent.futures scala
2021-10-26 17:59:04
1

คำตอบที่ดีที่สุด

3

อย่างที่คุณกำลังใช้ Akka คุณจะต้องเป็น ActorSystem instantiated ยังไงภายใต้ฮู้ดนั่นจะทำให้โพรเซสทำงานอยู่

เหมือนกันคุณสามารถจะเอามือของมันและเรียกมัน actorSystem.terminate() วิธีการหรือคุณยังสามารถใช้เป็น explicit sys.exit(0) ในตอนจบของของคุณหลักวิธีการ(0 เป็นทางออกรหัสคุณต้องการ).

แก้ไข:คุณควรจะห่ม Awaitเออยู่ Try และทำให้แน่ใจว่าจะเรียก sys.exit ในกรณีของความผิดพลาดของเช่นกัน

2021-10-26 18:23:16

ใช่ฉันมี implicit val system: ActorSystem = ActorSystem() ในสิ่งที่กำลังหลัก.
Seb

เปลี่ยนมันเพื่อ explicit val system: ActorSystem = ActorSystem(). งั้นฉันเรียกว่า system.terminate() (.อาคารผู้โดยสารคงถูกปิดเป็น deprecated),แต่มันยังไม่จบการทำงานของโปรแกรม มีทางอื่นมากกว่าโทรมา sys.exit(0) อย่างที่มันดูเหมือสังหารคนเถื่อนบังคับและมันควรจะเป็นแรงทาง?
Seb

ความผิดของฉันต้องจับทุกที่แยกกำหนด ActorSystems ทั้งหมดในฟังก์ชันและยุติการรอรับการเชื่อมต่อพวกเขาหลังจากที่พวกเขาเสร็จงานของเขา ทำได้ดี,นี่คือคำตอบอยู่นะ
Seb

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................