Обрабатывать несколько запросов записи Dropbox в Elixir - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь получить JPEG с NVR через FFMPEG в цикле для дат.

Porcelain.shell("ffmpeg -rtsp_transport tcp -stimeout 10000000 -i '#{stream_url}' -vframes 1 -y #{images_path}").out
spawn(fn ->
  File.exists?(images_path)
  |> upload_and_inject_image(config, images_path, upload_image_path, start_date, timezone)
end)

Тогда В части загрузки и добавления я загружаю JPEG в Dropbox как

  defp upload_image(status, image_path, upload_image_path) when status in [true, "true"] do
    client = ElixirDropbox.Client.new(System.get_env["DROP_BOX_TOKEN"])
    case ElixirDropbox.Files.upload(client, upload_image_path, image_path) do
      {{:status_code, _}, {:error, error}} -> Logger.debug "Error while uploading. Error: #{inspect error}"
      _ -> :noop
    end
  end
  defp upload_image(_status, _image_path, _upload_image_path), do: :noop

Но загрузка файла работает нормально, если Porcelain.shell("ffmpeg -rtsp_transport tcp -stimeout 10000000 -i '#{stream_url}' -vframes 1 -y #{images_path}").out получает результаты немного медленнее.

Если это работает быстро, Dropbox API выдает ошибки как too many operations at the same time, я использую эту библиотеку для dropbox

Я пытался усыпить команду Porcelain.shell, но результаты остались прежними. Есть ли возможность одновременно обрабатывать несколько одновременных операций в Dropbox через эликсир.

1 Ответ

0 голосов
/ 14 мая 2019

Вы выходите за пределы того, что Dropbox позволяет вам делать.Лучше отправлять несколько файлов за один upload_session.

. Рассмотрите возможность переключения на upload_session/start, upload_session/append и upload_session/finish_batch.

.
...