我试图将上下文从传入的 gRPC 端点传递到 goroutine,该 goroutine 负责向外部服务发送另一个请求,但我正在Error occurred: context canceled
从ctxhttp.Get
goroutine 内的函数调用接收消息:
package main
import (
"fmt"
"net"
"net/http"
"os"
"sync"
"golang.org/x/net/context/ctxhttp"
dummy_service "github.com/myorg/testing-apps/dummy-proto/gogenproto/dummy/service"
"github.com/myorg/testing-apps/dummy-proto/gogenproto/dummy/service/status"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
func main() {
var err error
grpcServer := grpc.NewServer()
server := NewServer()
dummy_service.RegisterDummyServer(grpcServer, server)
reflection.Register(grpcServer)
lis, err := net.Listen("tcp", ":9020")
if err != nil {
fmt.Printf("Failed to listen: %+v", err)
os.Exit(-1)
}
defer lis.Close()
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("Starting gRPC Server")
if err := …
Run Code Online (Sandbox Code Playgroud) 我有一个 Postgres 9.4.4 数据库,其中包含 170 万条记录,以下信息存储在名为 的表中调用的 JSONB 列data
中accounts
:
data: {
"lastUpdatedTime": "2016-12-26T12:09:43.901Z",
"UID": "2c5bb7fd-1a00-4988-8d92-ffaa52ebc20d",
"data": {
"country": "UK",
"verified_at": "2017-01-01T23:49:10.217Z"
}
}
Run Code Online (Sandbox Code Playgroud)
数据格式无法更改,因为这是旧信息。
我需要获取国家/地区所在的所有帐户UK
,该verified_at
值不为空并且该lastUpdatedTime
值大于某个给定值。
到目前为止,我有以下查询:
SELECT * FROM "accounts"
WHERE (data @> '{ "data": { "country": "UK" } }')
AND (data->'data' ? 'verified_at')
AND ((data->'data' ->> 'verified_at') is not null)
AND (data ->>'lastUpdatedTime' > '2016-02-28T05:49:08.511846')
ORDER BY data ->>'lastUpdatedTime' LIMIT 100 OFFSET 0;
Run Code Online (Sandbox Code Playgroud)
以及以下指标:
"accounts_idxgin" gin (data)
"accounts_idxgin_on_data" gin …
Run Code Online (Sandbox Code Playgroud)