چه روندی باید برای ارسال درخواست محتمل به timeout در دستور قرار بگیرد؟

با درود خدمت دوستات عزیز من یک درخواست دارم به گوگل که ممکنه برخی مواقع این درخواست با برگشت timeout مواجه بشه . در سوایفت معمولا درخواست در try قرار می دند البته بخاطر وجود کتابخونه خیلی خوب alomfire دیگه برنامه نویس زیاد درگیر نیست .

به هر صورت شما برای اینکه اگر تایم اوت داد دوباره تلاش شود و بعد از چندین تلاش دیگه جواب گو نبود ارور بدهد چه راه بهینه ای را پیشنهاد می کنید

درخواست نمونه :

def upload(file, token) do
    code = "Bearer #{token}"
    HTTPoison.post!(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=media", # url
    {:file, file},  # body
    [{"Authorization", code}],  # headers
    []    # options
    ).body
    |> IO.inspect
end

با تشکر از شما

سلام
try در swift براى error handling استفاده ميشه كه اين كار در elixir با استفاده از try, catch و rescue انجام ميشه.
اما در بيشتر موارد با پردازش درخواست و پاسخ كه با يك سرويس خارجى دگير هست در كنترلر موافق نيستم چون نميدونيد چقدر زمان ميبره، شايد استفاده از background jobs processor كه خودش مسئوليت تكرار درخواست رو در صورت عدم موفقيت به عهده داره بهتر باشه

1 پسندیده

طرز پیشنهادی در Erlang و Elixir اینه که از rescue try, catch پرهیز کنید و درعوض با Supervisor با timeout و retry این کارو انجام بدین
یک Task درست کنید و یک TaskSupervisor با timeout و retry
این با فلسفه Erlang همخوانی داره
https://hexdocs.pm/elixir/Task.Supervisor.html

timeout زمان timeout و مشخص میکنه و max_restarts تعداد restart ها Task

2 پسندیده

کاملا موافقم

2 پسندیده

تشکر از دو دوست محترم که همیشه کمک می کنند @samdvr @toomaj . خیلی ممنونم

2 پسندیده