= Το αίτημα Hackney (μέσω HTTPost) δεν επιστρέφει το αποτέλεσμα κατά την εκτέλεση. = Γεια, έχω ένα απλό chat bot γραμμένο σε elixir. Μία από τις περιπτώσεις χρήσης μου είναι να στείλω κάποιο ερώτημα σε ένα συγκεκριμένο url. Περίμενα ότι ο διακομιστής ερωτημάτων θα απαντούσε λίγο αργά (λίγα δευτερόλεπτα). Έχω γράψει τον κωδικό μου και στη σύνδεση του μηχανήματος μου ο κωδικός ερωτήματος εκτελείται κανονικά. Αλλά όταν ανέπτυξα την εφαρμογή μου σε ένα VPS, το ερώτημα απλώς δεν επιστρέφει απάντηση, ούτε σφάλμα ή κάποιο μήνυμα Αυτό με τρελαίνει κάπως αφού δεν έχω τρόπο να το διορθώσω αφού η ίδια η κλήση φαίνεται να έχει κολλήσει και να μην επιστρέφει επ'αόριστον. Η μη αυτόματη εκτέλεση του curl στο κοντέινερ λειτουργεί, η εκτέλεση του αιτήματος μέσα στο iex που απομακρύνει τον κόμβο που εκτελείται λειτουργεί, αλλά στο ζωντανό σύστημα δεν λειτουργεί. Μπορεί κάποιος να με βοηθήσει; Παρακάτω είναι το απόσπασμα του εν λόγω κώδικα: http_config = [ hackney: [pool: :tl], recv_timeout: 30_000, timeout: 30_000 ] με {:ok, body}<- Jason.encodesrc"=>ερώτημα {: εντάξει, %HTTPoison.Response{body: body}}<- HTTPoison.post(url, body,http_config), {:ok, result"=>αποτέλεσμα, "src_lang"=>src_lang}}<- Jason.decode(body) do result end |>IO.inspect(label: :result) Επεξεργασία: Πρόσθεσα τη γραμμή επιθεώρησης που αντιπροσωπεύει. Μερικές φορές αυτό το απόσπασμα εκτελείται κανονικά μερικές φορές όχι. Όταν φιλοξένησα αυτό το πρόγραμμα στο black friday dirt φθηνό αποκλειστικό VPS του φίλου μου, δεν είχε ποτέ αυτό το πρόβλημα. Αλλά όταν μετακόμισα στο Vultr έχει αυτό το πρόβλημα. Έχω δοκιμάσει επίσης σε έναν άλλο πάροχο VPS που χρησιμοποιούσα στο παρελθόν (ramnode) και έχω το ίδιο πρόβλημα Το πρώτο πράγμα που μου έρχεται αντιμέτωπος είναι ότι η δήλωση σας με δεν έχει άλλη ρήτρα, οπότε δεν θα καταλάβετε πού αποτυγχάνει Δοκιμάστε να προσθέσετε μια άλλη αντιστοίχιση και μοτίβο στο {:error, reason} πλειάδα και γράψτε το για να συνδεθείτε με sth όπως `Logger.error("Αποτυχία http post: #{inspect error Τότε θα πρέπει να μπορείτε να δείτε γιατί αποτυγχάνει ΥΣΤΕΡΟΓΡΑΦΟ. Πιθανότατα λειτουργεί σε ένα απομακρυσμένο κέλυφος στο τοπικό σας σύστημα λόγω της κλήσης δικτύου που πραγματοποιείται στον τοπικό υπολογιστή (που εκτελεί τον απομακρυσμένο κόμβο) και όχι στον διακομιστή ανάπτυξης. Για να βεβαιωθείτε ότι η κλήση δικτύου πραγματοποιείται στον απομακρυσμένο διακομιστή, δημιουργήστε μια διαδικασία στον απομακρυσμένο κόμβο (Node.spawn, π.χ.) που πραγματοποιεί την κλήση http Λυπάμαι που το απόσπασμα δεν λέει ολόκληρη την ιστορία, αλλά μετά από αυτό, ό,τι κι αν συμβεί, έχω μια γραμμή καταγραφής που λέει ότι η εντολή έχει τελειώσει και στο τέλος αν το αποτέλεσμα είναι {:error, _ } το καταγράφω. Αλλά στην περίπτωσή μου η γραμμή που λέει ότι η συνάρτηση έχει τελειώσει δεν λαμβάνει ποτέ κλήση, όπως ακριβώς κόλλησε η ταχυδρομική αίτηση, το χέρι αναμονής δεν επέστρεψε ποτέ Χρησιμοποιώ εκδόσεις και εκτελώ το δυαδικό τηλεχειριστήριο απελευθέρωσης στον διακομιστή ανάπτυξης για να συνδεθώ στον τρέχοντα κόμβο που εκτελείται.