问题描述
我有一个运行Go cloud的应用程序,启动时它会从GCS下载512mb文件(程序需要此文件)。在我的本地专用家庭连接本地,它可以正常工作,并在几秒钟内下载,但是当我将其部署到云中时,它像蜗牛一样下载。我必须增加超时并记录进度计数器,以确保它正在做某事。可能以大约30Kb / s的速度下载,这是行不通的。
云运行实例和GCS区域存储桶都在us-east4中。似乎没有任何旋钮可以使它起作用,我也看不到有记录的问题/约束。
任何人都知道可能是什么问题?
这里是进行下载的代码以及大量日志记录,因为一开始我不知道它是否在做任何事情:
func LoadFilter() error {
fmt.Println("loading filter")
ctx := context.Background()
storageClient,err := storage.NewClient(ctx)
if err != nil {
return err
}
defer storageClient.Close()
ctx,cancel := context.WithTimeout(ctx,time.Minute*60)
defer cancel()
obj := storageClient.Bucket("my_slow_bucket").Object("filter_export")
rc,err := obj.NewReader(ctx)
if err != nil {
return err
}
defer rc.Close()
attrs,err := obj.Attrs(ctx)
if err != nil {
return err
}
progressR := &ioprogress.Reader{
Reader: rc,Size: attrs.Size,DrawFunc: func(p int64,t int64) error {
fmt.Printf("%.2f\n",float64(p)/float64(t)*100)
return nil
},}
fmt.Println("reading filter...")
data,err := ioutil.ReadAll(progressR)
if err != nil {
return err
}
fmt.Println("decoding filter...")
filter,err := cuckoo.Decode(data)
if err != nil {
return err
}
fmt.Println("filter decoded")
cf = filter
fmt.Println("initailized the filter successfully!")
return nil
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)