स्काला नहीं है अनुप्रयोग से बाहर निकलें, भले ही भविष्य में पूरा हो गया है

0

सवाल

मैं प्रतीक्षा के लिए एक भविष्य को पूरा करने के लिए और मुद्रित सामग्री पर console. यहां तक कि जब सब कुछ समाप्त हो गया है, मुख्य आवेदन नहीं करता है से बाहर निकलें और मैं इसे मारने के लिए मैन्युअल रूप से ।

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 हो जाता है कंसोल पर मुद्रित के साथ संघर्ष की उम्मीद है, लेकिन आवेदन अभी भी खत्म नहीं होता. वहाँ कुछ है मैं क्या कर सकते हैं आवेदन बाहर निकलने के लिए? वहाँ है अभी भी कुछ चल रहा है, कि मुख्य लिए इंतज़ार कर रही है?

मैं का उपयोग कर रहा हूँ:

  • स्काला 2.12.10
  • अक्का 2.5.26
  • akkaHttp 10.1.11
akka akka-http concurrent.futures scala
2021-10-26 17:59:04
1

सबसे अच्छा जवाब

3

के रूप में आप का उपयोग कर रहे हैं अक्का, आप की संभावना एक ActorSystem चालू किसी भी तरह हुड के नीचे रखना होगा कि इस प्रक्रिया चल रहा है ।

या तो आप प्राप्त करने में सक्षम हैं एक हाथ पर, और अपने actorSystem.terminate() विधि, या आप भी उपयोग कर सकते हैं एक स्पष्ट sys.exit(0) के अंत में अपने मुख्य विधि (0 किया जा रहा से बाहर निकलें कोड आप चाहते हैं).

संपादित करें: आप चाहिए भी लपेट Awaitएस में Try और सुनिश्चित करें कि कॉल करने के लिए sys.exit विफलता के मामले में के रूप में अच्छी तरह से.

2021-10-26 18:23:16

हाँ, मैं एक implicit val system: ActorSystem = ActorSystem() वस्तु में चल रहा है कि मुख्य.
Seb

इसे बदलने के लिए स्पष्ट val system: ActorSystem = ActorSystem(). तो मैंने कहा जाता है system.terminate() (.शटडाउन पदावनत किया गया है), लेकिन यह अभी भी अंत नहीं है आवेदन. वहाँ एक और तरीका है फोन की तुलना में sys.exit(0) के रूप में यह लगता है जानवर के लिए मजबूर किया और वहाँ होना चाहिए एक उद्देश्य तरीका है?
Seb

मेरी गलती थी, सभी को पकड़ने के लिए अंतर्निहित ActorSystems में सभी कार्य करता है और उन्हें समाप्त करने के बाद वे समाप्त हो गया अपना काम. अच्छी तरह से किया है, यह सही जवाब है ।
Seb

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................