feat: 请求超时处理

This commit is contained in:
CaIon 2024-03-13 16:19:22 +08:00
parent 37c0c8ebdd
commit fd3a41bacb
4 changed files with 22 additions and 14 deletions

View File

@ -25,6 +25,7 @@ type MidjourneyDto struct {
MjId string `json:"id"` MjId string `json:"id"`
Action string `json:"action"` Action string `json:"action"`
CustomId string `json:"customId"` CustomId string `json:"customId"`
BotType string `json:"botType"`
Prompt string `json:"prompt"` Prompt string `json:"prompt"`
PromptEn string `json:"promptEn"` PromptEn string `json:"promptEn"`
Description string `json:"description"` Description string `json:"description"`

View File

@ -112,7 +112,7 @@ func RelayMidjourneyNotify(c *gin.Context) *dto.MidjourneyResponse {
return nil return nil
} }
func getMidjourneyTaskDto(c *gin.Context, originTask *model.Midjourney) (midjourneyTask dto.MidjourneyDto) { func coverMidjourneyTaskDto(c *gin.Context, originTask *model.Midjourney) (midjourneyTask dto.MidjourneyDto) {
midjourneyTask.MjId = originTask.MjId midjourneyTask.MjId = originTask.MjId
midjourneyTask.Progress = originTask.Progress midjourneyTask.Progress = originTask.Progress
midjourneyTask.PromptEn = originTask.PromptEn midjourneyTask.PromptEn = originTask.PromptEn
@ -181,7 +181,7 @@ func RelayMidjourneyTask(c *gin.Context, relayMode int) *dto.MidjourneyResponse
Description: "task_no_found", Description: "task_no_found",
} }
} }
midjourneyTask := getMidjourneyTaskDto(c, originTask) midjourneyTask := coverMidjourneyTaskDto(c, originTask)
respBody, err = json.Marshal(midjourneyTask) respBody, err = json.Marshal(midjourneyTask)
if err != nil { if err != nil {
return &dto.MidjourneyResponse{ return &dto.MidjourneyResponse{
@ -204,7 +204,7 @@ func RelayMidjourneyTask(c *gin.Context, relayMode int) *dto.MidjourneyResponse
if len(condition.IDs) != 0 { if len(condition.IDs) != 0 {
originTasks := model.GetByMJIds(userId, condition.IDs) originTasks := model.GetByMJIds(userId, condition.IDs)
for _, originTask := range originTasks { for _, originTask := range originTasks {
midjourneyTask := getMidjourneyTaskDto(c, originTask) midjourneyTask := coverMidjourneyTaskDto(c, originTask)
tasks = append(tasks, midjourneyTask) tasks = append(tasks, midjourneyTask)
} }
} }
@ -403,23 +403,22 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
} }
} }
//req.Header.Set("ApiKey", c.Request.Header.Get("ApiKey")) //req.Header.Set("ApiKey", c.Request.Header.Get("ApiKey"))
timeout := time.Second * 30
ctx, cancel := context.WithTimeout(context.Background(), timeout)
// 使用带有超时的 context 创建新的请求
req = req.WithContext(ctx)
req.Header.Set("Content-Type", c.Request.Header.Get("Content-Type")) req.Header.Set("Content-Type", c.Request.Header.Get("Content-Type"))
req.Header.Set("Accept", c.Request.Header.Get("Accept")) req.Header.Set("Accept", c.Request.Header.Get("Accept"))
//mjToken := ""
//if c.Request.Header.Get("ApiKey") != "" {
// mjToken = strings.Split(c.Request.Header.Get("ApiKey"), " ")[1]
//}
//req.Header.Set("ApiKey", "Bearer midjourney-proxy")
req.Header.Set("mj-api-secret", strings.Split(c.Request.Header.Get("Authorization"), " ")[1]) req.Header.Set("mj-api-secret", strings.Split(c.Request.Header.Get("Authorization"), " ")[1])
// print request header // print request header
log.Printf("request header: %s", req.Header) //log.Printf("request header: %s", req.Header)
log.Printf("request body: %s", midjRequest.Prompt) //log.Printf("request body: %s", midjRequest.Prompt)
defer cancel()
resp, err := service.GetHttpClient().Do(req) resp, err := service.GetHttpClient().Do(req)
if err != nil { if err != nil {
return &dto.MidjourneyResponse{ return &dto.MidjourneyResponse{
Code: 4, Code: 5,
Description: "do_request_failed", Description: "do_request_failed",
} }
} }
@ -427,14 +426,14 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons
err = req.Body.Close() err = req.Body.Close()
if err != nil { if err != nil {
return &dto.MidjourneyResponse{ return &dto.MidjourneyResponse{
Code: 4, Code: 5,
Description: "close_request_body_failed", Description: "close_request_body_failed",
} }
} }
err = c.Request.Body.Close() err = c.Request.Body.Close()
if err != nil { if err != nil {
return &dto.MidjourneyResponse{ return &dto.MidjourneyResponse{
Code: 4, Code: 5,
Description: "close_request_body_failed", Description: "close_request_body_failed",
} }
} }

View File

@ -35,6 +35,8 @@ function renderType(type) {
return <Tag color="yellow" size='large'>图生文</Tag>; return <Tag color="yellow" size='large'>图生文</Tag>;
case 'BLEAND': case 'BLEAND':
return <Tag color="lime" size='large'>图混合</Tag>; return <Tag color="lime" size='large'>图混合</Tag>;
case 'REROLL':
return <Tag color="indigo" size='large'>重绘</Tag>;
case 'INPAINT': case 'INPAINT':
return <Tag color="violet" size='large'>局部重绘</Tag>; return <Tag color="violet" size='large'>局部重绘</Tag>;
case 'INPAINT_PRE': case 'INPAINT_PRE':

View File

@ -95,6 +95,12 @@ const EditChannel = (props) => {
case 26: case 26:
localModels = ['glm-4', 'glm-4v', 'glm-3-turbo']; localModels = ['glm-4', 'glm-4v', 'glm-3-turbo'];
break; break;
case 2:
localModels = ['midjourney'];
break;
case 5:
localModels = ['midjourney'];
break;
} }
setInputs((inputs) => ({...inputs, models: localModels})); setInputs((inputs) => ({...inputs, models: localModels}));
} }