goroutineでエラーを処理する方法

hd時間:

AWS S3へのファイルのアップロードに使用するサービスがあります私はgoroutinesで使用しようとしていて、ファイルをアップロードしていませんでした。goroutineなしでファイルをアップロードした場合は、完了するまで待機してから応答を返す必要があります。goroutineを使用すると、バックグラウンドで実行され、クライアント側への応答が速くなります。

goroutinesを使用すると、アップロードが失敗した場合はどうなりますか?そして、そのファイルはAWS S3にアップロードされていませんか?これをどのように扱うか教えてもらえますか?

これがファイルをアップロードする私の機能です

func uploadToS3(s *session.Session, size int64, name string , buffer []byte)( string , error) {

    tempFileName := "pictures/" + bson.NewObjectId().Hex() + "-" + filepath.Base(name)

    _, err := s3.New(s).PutObject(&s3.PutObjectInput{
        Bucket:             aws.String("myBucketNameHere"),
        Key:                aws.String(tempFileName),
        ACL:                aws.String("public-read"),
        Body:               bytes.NewReader(buffer),
        ContentLength:      aws.Int64(int64(size)),
        ContentType:        aws.String(http.DetectContentType(buffer)),
        ContentDisposition: aws.String("attachment"),
        ServerSideEncryption: aws.String("AES256"),
        StorageClass:       aws.String("INTELLIGENT_TIERING"),
    })

    if err != nil {
        return "", err
    }

    return tempFileName, err
}

func UploadFile(db *gorm.DB) func(c *gin.Context) {
    return func(c *gin.Context) {
        file, err := c.FormFile("file")

        f, err := file.Open()
        if err != nil {
            fmt.Println(err)
        }

        defer f.Close()
        buffer := make([]byte, file.Size)
        _, _ = f.Read(buffer)
        s, err := session.NewSession(&aws.Config{
            Region: aws.String("location here"),
            Credentials: credentials.NewStaticCredentials(
                    "id",
                    "key",
                    "",
                ),
        })
        if err != nil {
            fmt.Println(err)
        }

        go uploadToS3(s, file.Size, file.Filename, buffer)

        c.JSON(200, fmt.Sprintf("Image uploaded successfully"))
    }
}

5-10分あたり10000以上のファイルをアップロードする多くのリクエストがある場合はどうですか?リクエストが多すぎるため、一部のファイルをアップロードできませんか?

colm.anseo:

バックグラウンドのgo-routineでファイルをアップロードするなどの非同期タスクでchan errorは、呼び出し元にを返すような方法でアップロード関数を記述できますその後、呼び出し元は、からの読み取りにより、後でファイルアップロードの最終的なエラー(またはエラーがない場合はnil)に対応できますchan error

ただし、アップロードリクエストを受け入れる場合は、代わりに、チャネル経由のファイルアップロードを受け入れるワーカーアップロードgo-routineを作成することをお勧めします。出力「エラー」チャネルは、成功/失敗を追跡できます。必要に応じて、アップロードされたエラーを元のアップロードチャネルキューに書き戻すことができます(再試行の集計と再試行の最大数を含む-問題のあるペイロードが永久にループしないため)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

エラーを処理し、WaitGroupを使用してGoroutineを終了する方法

分類Dev

NoneTypeエラーを処理する方法

分類Dev

RubyでJSONパーサーエラーを処理する方法

分類Dev

PythonArgumentParserでエラーを処理する

分類Dev

リゾルバーでエラーを処理する方法

分類Dev

リゾルバーでエラーを処理する方法

分類Dev

AngularJSで$ resourceサービスエラーを処理する方法

分類Dev

リゾルバーでエラーを処理する方法

分類Dev

nestjsでマングースエラーを処理する方法

分類Dev

Xamarin.formsWebviewでロードエラーを処理する方法

分類Dev

致命的なエラーを処理および処理する方法

分類Dev

liveDataでエラーを処理する方法

分類Dev

boto3でエラーを処理する方法

分類Dev

fork()の後でexecvp(...)エラーを処理する方法は?

分類Dev

関数のhttp.Getでエラーを処理する方法

分類Dev

Goで特定のエラーを指定して処理する方法

分類Dev

LiveDataでエラー状態を処理する方法は?

分類Dev

RxJava:zip演算子でエラーを処理する方法

分類Dev

Restifyでエラーを処理(つまりログ)する方法

分類Dev

TopShelfで非同期Start()エラーを処理する方法

分類Dev

Apolloスタックでエラーを処理する方法

分類Dev

Dropbox C#SDKでエラーを処理する方法は?

分類Dev

UnityでFirebase認証エラーを処理する方法

分類Dev

multiprocessing.Poolで初期化エラーを処理する方法は?

分類Dev

Rで浮動小数点エラーを処理する方法

分類Dev

MongoDB / mongooseでキャストエラーを処理する方法

分類Dev

Node.js / expressでエラーを処理する方法

分類Dev

Node.jsで非同期エラーを処理する方法

分類Dev

API呼び出しでRESOURCEEXHAUSTEDエラーを処理する方法

Related 関連記事

  1. 1

    エラーを処理し、WaitGroupを使用してGoroutineを終了する方法

  2. 2

    NoneTypeエラーを処理する方法

  3. 3

    RubyでJSONパーサーエラーを処理する方法

  4. 4

    PythonArgumentParserでエラーを処理する

  5. 5

    リゾルバーでエラーを処理する方法

  6. 6

    リゾルバーでエラーを処理する方法

  7. 7

    AngularJSで$ resourceサービスエラーを処理する方法

  8. 8

    リゾルバーでエラーを処理する方法

  9. 9

    nestjsでマングースエラーを処理する方法

  10. 10

    Xamarin.formsWebviewでロードエラーを処理する方法

  11. 11

    致命的なエラーを処理および処理する方法

  12. 12

    liveDataでエラーを処理する方法

  13. 13

    boto3でエラーを処理する方法

  14. 14

    fork()の後でexecvp(...)エラーを処理する方法は?

  15. 15

    関数のhttp.Getでエラーを処理する方法

  16. 16

    Goで特定のエラーを指定して処理する方法

  17. 17

    LiveDataでエラー状態を処理する方法は?

  18. 18

    RxJava:zip演算子でエラーを処理する方法

  19. 19

    Restifyでエラーを処理(つまりログ)する方法

  20. 20

    TopShelfで非同期Start()エラーを処理する方法

  21. 21

    Apolloスタックでエラーを処理する方法

  22. 22

    Dropbox C#SDKでエラーを処理する方法は?

  23. 23

    UnityでFirebase認証エラーを処理する方法

  24. 24

    multiprocessing.Poolで初期化エラーを処理する方法は?

  25. 25

    Rで浮動小数点エラーを処理する方法

  26. 26

    MongoDB / mongooseでキャストエラーを処理する方法

  27. 27

    Node.js / expressでエラーを処理する方法

  28. 28

    Node.jsで非同期エラーを処理する方法

  29. 29

    API呼び出しでRESOURCEEXHAUSTEDエラーを処理する方法

ホットタグ

アーカイブ