Elixir流在本地计算机中工作,但不处理数据并抛出:[warn]**未定义的句柄信息在";GenStage.Streamer“;在AWS Fargate

Elixir流在本地计算机中工作,但不处理数据并抛出:[warn]**未定义的句柄信息在";GenStage.Streamer“;在AWS Fargate,elixir,phoenix,Elixir,Phoenix,我一直在尝试使用Elixir Flow(从GenStage构建的Lib)来处理/流式处理来自AWS S3 bucket文件的数据,并写入AWS RDS DB 我已经能够在我的本地机器上成功地做到这一点,但当我将我的应用程序部署到AWS ECS/Fargate或EC2时,它并没有按预期工作。 以下是我的实施: def load_file(file_name) do window = Flow.Window.count(100) file_name |> HTTPS

我一直在尝试使用Elixir Flow(从GenStage构建的Lib)来处理/流式处理来自AWS S3 bucket文件的数据,并写入AWS RDS DB

我已经能够在我的本地机器上成功地做到这一点,但当我将我的应用程序部署到AWS ECS/Fargate或EC2时,它并没有按预期工作。 以下是我的实施:

  def load_file(file_name) do
    window = Flow.Window.count(100)
    file_name
    |> HTTPStream.get()
    |> HTTPStreamUtil.lines()
    |> Flow.from_enumerable()
    |> Flow.filter(&(String.match?(&1, ~r/^rec/)))
    |> Flow.map(fn line ->
      line
      |> String.replace("\n", "")
      |> String.replace("\"", "")
      |> String.split(";")
      |> transform
    end)
    |> Flow.partition(window: window, key: {:key, "day_type_no"})
    |> Flow.reduce(fn -> [] end, fn item, batch -> [item | batch] end)
    |> Flow.on_trigger(fn items ->
      items
      |> add_timestamps
      |> Database.Routes.create_multiple_day_type
      {[items], items}
    end)
    |> Flow.run()
  end
当我在AWS Fargate或EC2中运行我的应用程序时,我看到下面的日志,并且部分/所有数据未被处理

[warn] ** Undefined handle_info in "GenStage.Streamer"
** Unhandled message: {:tcp, #Port<0.20>, "    \"SBST#c29      #01#06#2019#3\"\r\nrec;    20200512;       32510;              \"SBST#37       #01#07#2019#4\"\r\nrec;    20200512;       32511;              \"SBST#31       #03#00#2019#5\"\r\nrec;    20200512;       32512;              \"SBST#298      #01#05#2019#6\"\r\nrec;    20200512;       32513;              \"SBST#c40      #02#06#2019#7\"\r\nrec;    20200512;       32514;              \"SBST#229      #02#06#2019#1\"\r\nrec;    20200512;       32515;              \"SBST#298      #01#00#2019#2\"\r\nrec;    20200512;       32516;              \"SBST#c291     #01#00#2019#3\"\r\nrec;    20200512;       32517;              \"SBST#38       #03#00#2019#4\"\r\nrec;    20200512;       32518;              \"SBST#33       #06#04#2019#5\"\r\nrec;    20200512;       32519;              \"SBST#2N       #01#05#2019#6\"\r\nrec;    20200512;       32520;              \"SBST#401      #02#06#2019#7\"\r\nrec;    20200512;       32521;              \"SBST#c23      #01#00#2019#1\"\r\nrec;    20200512;       32523;              \"SBST#c291     #01#06#2019#3\"\r\nrec;    20200512;       32524;              \"SBST#38       #01#07#2019#4\"\r\nrec;    20200512;       32525;              \"SBST#33       #06#07#2019#5\"\r\nrec;    20200512;       32526;              \"SBST#31       #01#05#2019#6\"\r\nrec;    20200512;       32527;              \"SBST#42       #03#06#2019#7\"\r\nrec;    20200512;       32528;              \"SBST#c23      #01#06#2019#1\"\r\nrec;    20200512;       32529;              \"SBST#2N       #01#65#2019#2\"\r\nrec;    20200512;       32530;              \"SBST#292      #01#00#2019#3\"\r\nrec;    20200512;       32531;              \"SBST#c39      #01#00#2019#4\"\r\nrec;    20200512;       32532;              \"SBST#35       #02#00#2019#5\"\r\nrec;    20200512;       32533;              \"SBST#33       #02#05#2019#6\"\r\nrec;    20200512;       32534;              \"SBST#45       #01#06#2019#7\"\r\nrec;    20200512;       32535;              \"SBST#c29      #01#00#2019#1\"\r\nrec;    20200512;       32536;              \"SBST#31       #03#00#2019#2\"\r\nrec;    20200512;       32537;              \"SBST#292      #01#06#2019#3\"\r\nrec;    20200512;       32538;              \"SBST#c39      #01#07#2019#4\"\r\nrec;    20200512;       32539;              \"SBST#37       #03#00#2019#5\"\r\nrec;    20200512;       32540;              \"SBST#35       #02#05#2019#6\"\r\nrec;    20200512;       32541;              \"SBST#c46      #03#06#2019#7\"\r\nrec;    20200512;       32542;              \"SBST#c29      #01#06#2019#1\"\r\nrec;    20200512;       32543;              \"SBST#33       #06#25#2019#2\"\r\nrec;    20200512;       32544;              \"SBST#c293     #05#00#2019#3\"\r\nrec;    20200512;       32545;              \"SBST#4        #02#00#2019#4\"\r\nrec;    20200512;       32546;              \"SBST#37       #01#07#2019#5\"\r\nrec;    20200512;       32547;              \"SBST#37       #01#05#2019#6\"\r\nrec;    20200512;       32548;              \"SBST#47       #02#06#2019#7\"\r\nrec;    20200512;       32549;              \"SBST#c291     #01#00#2019#1\"\r\nrec;    20200512;       32550;              \"SBST#33       #06#07#2019#2\"\r\nrec;    20200512;       32551;              \"SBST#c293     #01#06#2019#3\"\r\nrec;    20200512;       32552;              \"SBST#c40      #02#00#2019#4\"\r\nrec;    20200512;       32553;              \"SBST#38       #03#00#2019#5\"\r\nrec;    20200512;       32554;              \"SBST#38       #03#05#2019#6\"\r\nrec;    20200512;       32555;              \"SBST#4N       #01#67#2019#7\"\r\nrec;    20200512;       32556;              \"SBST#c291     #01#06#2019#1\"\r\nrec;    20200512;       32557;              \"SBST#35       #02#00#2019#2\"\r\nrec;    20200512;       32558;              \"SBST#298      #01#00#2019#3\"\r\nrec;    20200512;       32559;              \"SBST#c40      #01#07#2019#4\"\r\nrec;    20200512;       32560;              \"SBST#38       #01#07#2019#5\"\r\nrec;    20200512;       32561;              \"SBST#c39      #01#05#2019#6\"\r\nrec;    20200512;       32562;              \"SBST#506      #02#06#2019#7\"\r\nrec;    20200512;       32563;              \"SBST#292      #01#00#2019#1\"\r\nrec;    20200512;       32564;              \"SBST#37       #03#00#2019#2\"\r\nrec;    202" <> ...}
** Stream started at:
    (gen_stage 1.0.0) lib/gen_stage.ex:1609: GenStage.from_enumerable/2
    (stdlib 3.13) supervisor.erl:385: :supervisor.do_start_child_i/3
    (stdlib 3.13) supervisor.erl:371: :supervisor.do_start_child/2
    (stdlib 3.13) supervisor.erl:677: :supervisor.handle_start_child/2
    (stdlib 3.13) supervisor.erl:426: :supervisor.handle_call/3
    (stdlib 3.13) gen_server.erl:706: :gen_server.try_handle_call/4
    (stdlib 3.13) gen_server.erl:735: :gen_server.handle_msg/6
    (stdlib 3.13) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
[warn]**GenStage.Streamer中未定义的句柄信息
**未经处理的未经处理的消息:{:tcp,ţ港口港口,以及未经处理的未经处理的消息::{:tcp,现场未经处理的消息::{:tcp,tcp,港口,港口,港口,,“\“SBST 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 93555 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3\\以下以下以下未经处理的未处理消息::“\r\r\\r\r\\\非处理消息::以下以下以下以下以下以下以下消息::::::::::::以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下未未经处理的消息::::::::::::8#01#05#2019#6\“\r\\NRC\\r\NRC;20200512\\r\NRC;20200512\\r\NRC\\r\NRC\\r\NRC;20200512\r\r\NRC;20200512\\r\NRC;20200512;32513;32513;13;3\r\r\r\r\r\\r\NRC\\r\r\r\NRC;2020051\r\NRC;2020051;20200512;20200512;20200512;20200512;20200512;20200512;32512;32514;32513;32514;32514;14;14;14;教学教学委员会;教学教学教学教学;202002008\r\r\r\r\r\r\r\NRC;20200512;20200512;20200512;20200512;20200512;20200512;20200512;32514;20200512;32514;;;;;;;;;91#01#00#2019#3“\\r\nRecC;20200512\r\NRC;20200512;32517;r\nRecC;2020051\r\nRecC;2020051\r\nRecC;2020051\\r\nRecC;20200512;32518;20200512;32517;17;7\r\\r\nRecC;r\\\\r\n雷克教教教教教教;2020051\r\nRecC;202002012\nRecC;2020051;20200512;20200512;20200512;20200512;32518;20200512;32518;20200512;32518;32518;20200512;32518;32518;20200512;32;32518;32518;32518;18;18;18;18;18;18;18;18;18;18;18;18;教学教学教学学校学校学校学校学校学校学校学校学校学校学校学校学校学校;20200512;20200512;202002012;35; 02#06#2019#7“\r\\nrec;20200512\r\NRC;20200512;32521;r\\NRC;2020051\r\NRC;2020051\r\NRC;2020051\r\NRC;20200512;20200512;32521;21;21\r\NRC;2020051\\r\NRC;2020051\r\NRC;2020051\NRC;2020051;2020051;20200512;20200512;32518;20200512;32523;20200512;20200512;20200512;32523;20200512;20200512;32523;20200512;20200512;32523;20200512;20200512;32;20200512;32;32;32;32;20200512;32;32;32;32;32;32;3;农村;农村农村农村农村;农村农村;20200512;20200512;20200512;20200512;20200512;32;20200512;325#06#07#2019#5“\\r\nRecc;20200512;32526;r\\nRecc;20200512;r\\nRecc;20200512;2020051\r\nRecc;2020051\\r\nRecc;20200512;32526;32 26;26;3\r\r\nRecc;2020051\r\nRecC;2020051\r\nRecc;202002012\nRecc;2020051;20200512;20200512;20200512;32527;20200512;20200512;32527;20200512;32527;20200512;20200512;32527;20200512;20200512;32527;20200512;20200512;32527;2012;27;27;;;;;;;;;\;农村农村农村农村农村;20200512;20200512;20200512;20200512;20200512;20200512;20200512;32527;202002012;2012;27;27;7#01#65#2019#2“\r\NRC;20200512;r\NRC;20200512;32530;r\\NRC;20200512;r\NRC;20200512;20200512;32530;3\r\NRC;20200512;r\NRC;20200512;20200512;32530;30;30;3\r\\r\NRC;20200编码;r\NRC;2020051;r\NRC;2020051;2020051;20200512;20200512;20200512;20200512;20200512;20200512;32531;32531;20200512;32;20200512;32531;20200512;32;20200512;32531;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;32;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;32;2012;2012;2012;32#02#05#2019#6“\\r\nRecc;20200512;32534;r\\nRecc;2020051\\r\nRecc;20200512;20200512;32534;3\r\nRecc;r\\nRecc;2020051\\r\nRecc;20200512;32534;3\r\r\nRecc;2020051\r\r\nRecc;20200512;20200512;20200512;32535;20200512;32535;20200512;32535;32535;35;35;;;\\\r\r\回c;202002012;20200512;20200512;20200512;20200512;32535;32;32535;32;35;35;35;35;;;;;;;“学校学校学校学校学校学校教学教学教学教学教学;202002012;202002012;20200512;20200512;20200512;20200512;32;32535;2012;32535;32;32;#01#06#2019#3“\r\\NRC;20200512;r\NRC;20200512;32538;r\\NRC;2020051\r\NRC;20200512;r\NRC;2020051\\r\NRC;20200512;32538;38;38;3\\r\NRC;2020051\r\NRC;2020051\r\NRC;2020051;r\NRC;2020051;20200512;20200512;20200512;20200512;32539;20200512;20200512;32539;20200512;32539;20200512;32;32539;20200512;32;32;32;32;32;32;32;2009\NRC;20200512;32;32;32;2012;2012;32;32;202002012;32;32;32;32;32;32;32;32;32;32;32;32;32;2009\\\NRC;2020051;2012;2012;2012;2012#03#06#2019#7“\r\\nrec;20200512\r\nrec;20200512;32542\\r\NRC\\r\NRC;20200512\r\NRC;2020051\r\NRC;2020051\\r\NRC;20200512;32542;32\r\NRC;2020051\\r\NRC;2020051\r\NRC;2020051\r\nrec;20200512;20200512;20200512;20200512;325委员会;20200512;20200512;32543;20200512;32543;20200512;32543;20200512;32543;20200512;32543;20200512;32;32;32;32;32;32;2012\\\r\NRC;20200512;20200512;32;32543;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;2012;32;2012\\\\\\\\\r\\\\#02#00#2019#4“\\r\nRecC;20200512;20200512;32546;r\\nRecC\r\nRecC;2020051\\r\nRecC;2020051\r\nRecC;20200512;20200512;32547;32546;46;;\\r\\r\nRecC;2020051\r\nRecC;r\nRecC;r\nRecC;\r\r\nRecC;202002012\nRecC;2020051;20200512;20200512;20200512;20200512;3252012;3252012;32547;20200512;32547;202002012;32547;32547;20200512;32547;32547;20200512;32547;32547;202002012;32547;202002012;32547;2012;32547;;;;;;;;;;;;;\;202002012;202002012;202002012;32547;202002012;32547;2012 35; 01#00#2019#1“\\r\nRecC;20200512\r\nRecC;20200512;32550;r\\nRecC;20200512\r\nRecC;20200512\r\nRecC;2020051;20200512;32550;32 50;50;50;50;\\r\r\nRecC;2020051\r\r\nRecC;2020051\r\nRecC;2020051;20200512;20200512;20200512;32551;32551;32551;20200512;32551;32551;;;;;;\;202002012;20200512;20200512;32551;32551;51;51;51;;;\\\\\r\\\r\r\r\r\r\r\r\r\r\再再再再再再再再再再再再再再再再委员会;202002012;202002012;20200512;20200512;20200512;32551;32551#03#00#2019#5“\\r\nRecC;20200512;20200512;32554;\r\nRecC\r\nRecC;2020051\r\nRecC;2020051\\r\nRecC;2020051\r\nRecC;20200512;32554;32554;\r\r\nRecC;2020051\\r\nRecC;2020051\r\nRecC;20200512;20200512;20200512;32555;32555;20200512;32555;20200512;32555;32555;;;;;;;\;20200512;20200512;20200512;20200512;325500;32555;;;;;;;;\\\r\\\r\\\\r\r\农村;20200512;20200512;20200512;32555;20200512;20200512;32555;32555;32555;;;;;;;;;;;;;;;\;2012#02#00#2019#2“\r\NRC;20200512;r\NRC;20200512;20200512;32558;r\NRC;r\NRC;r\NRC;r\NRC;20200512;r\NRC;20200512;20200512;32558;32558;;\\r\NRC;20200512;20200512;2020051;2020051;20200512;r\NRC;202002012;20200512;20200512;20200512;20200512;20200512;32559;20200512;32559;20200512;20200512;32559;20200512;32559;32559;;;;;;\;农村农村农村;20200512;20200512;20200512;20200512;20200512;20200512;32559;20200512;20200512;32559;20200512;2012;32559;;;;;;\;农村;农村;农村;20200512;20200512;20200512;2012;#01#05#2019#6“\r\nrec;20200512;32562;“SBST-292-01-00-2019-1”\r\nrec;20200512;32563;“SBST-292-01-00-2019-1”\r\nrec;20200512;32564;“SBST-37-03-2019-01-00”\r\nrec
**流开始于:
(gen_stage 1.0.0)lib/gen_stage.ex:1609:GenStage.from_enumerable/2
(stdlib 3.13)supervisor.erl:385::supervisor.do_start_child_i/3
(stdlib 3.13)supervisor.erl:371::supervisor.do_start_child/2
(stdlib 3.13)supervisor.erl:677::supervisor.handle\u start\u child/2
(stdlib 3.13)supervisor.erl:426::supervisor.handle_call/3
(stdlib 3.13)gen_server.erl:706::gen_server.try_handle_call/4
(stdlib 3.13)gen_server.erl:735::gen_server.handle_msg/6
(stdlib 3.13)proc_lib.erl:226::proc_lib.init_p_do_apply/3
我尝试过使用不同的流。窗口(例如计数、全局等)都没有按预期工作。此外,我怀疑可能是我的远程服务器/任务没有启用CPU/内存,我尝试将任务CPU增加到2vCPU,这确实有助于处理更多数据,但不是所有数据

有线的事情是,这段代码在我的本地机器上完美地工作(我的pc的prolly cos功能强大??)
  def load_file(file_name) do
    # download vdv452 file
    file_path = Application.get_env(:ex_aws, :docker_volume) <> (String.split(file_name, "/") |> List.last)
    ExAws.S3.download_file(Application.get_env(:ex_aws, :s3_bucket_name), file_name, file_path, timeout: 3600)
    |> ExAws.request!

    # stream file data
    file_path
    |> File.stream!
    |> Flow.from_enumerable()
    |> Flow.filter(&(String.match?(&1, ~r/^rec/)))
    |> Flow.map(fn line ->
      line
      |> String.replace("\n", "")
      |> String.replace("\"", "")
      |> String.split(";")
      |> transform
    end)
    |> Flow.partition(window: Flow.Window.count(1_000))
    |> Flow.reduce(fn -> [] end, fn item, batch -> [item | batch] end)
    |> Flow.on_trigger(fn items ->
      items
      |> add_timestamps
      |> Database.Routes.create_multiple_route_sequence
      {[items], items}
    end)
    |> Flow.run()
  end