代码之家  ›  专栏  ›  技术社区  ›  Frerich Raabe

如何在生成数据时通过Ruby中的HTTParty上传数据?

  •  0
  • Frerich Raabe  · 技术社区  · 3 年前

    我有一个生成数据的函数。现在,这些数据被写入一个文件。文件完成后,我通过HTTParty上传:

    require 'httparty'
    
    url = "..."
    
    def generate_data(file)
      file << "First line of data\n"
      sleep 1
      file << "Second line of data\n"
      sleep 1
      file << "Third line of data\n"
    end
    
    File.open('payload.txt', 'w+') do |file|
      generate_data(file)
      file.rewind
      HTTParty.post(url, body: {file: file})
    end
    

    碰巧, generate_data 需要一点时间--我想加快脚本的速度 通过交叉生成数据并上传数据,避免写入磁盘。我如何使用HTTParty实现这一点?

    我在找类似的东西 StringIO 它可以用作固定大小的FIFO缓冲区: 生成数据 HTTParty.post 通话内容是这样的。(并在缓冲区为空时阻塞)。然而,我没有找到任何类似的东西。

    0 回复  |  直到 3 年前
        1
  •  1
  •   javiyu    3 年前

    你需要使用 streaming

    HTTParty.put(
      'http://localhost:3000/train',
      body_stream: StringIO.new('foo')
    )