midjourney-api icon indicating copy to clipboard operation
midjourney-api copied to clipboard

把服务挂载服务器一段时间,没有调用,就会出现api调用成功,并且discod也会出图,但是图片信息不会返回

Open xiaoqixiaoqi1113 opened this issue 2 years ago • 15 comments
trafficstars

the code that reproduces this issue or a replay of the bug

image 这个是服务接收到的信息 image 这个是出图 只要把服务挂在服务器,运行一晚上,没有进行操作,就会出现这个问题,请问有什么好的解决办法吗

xiaoqixiaoqi1113 avatar Jul 07 '23 06:07 xiaoqixiaoqi1113

version?

zcpua avatar Jul 08 '23 07:07 zcpua

version?

image version is 3.0.81

xiaoqixiaoqi1113 avatar Jul 08 '23 14:07 xiaoqixiaoqi1113

我也遇到了这个问题。4.0.101 和 3.1.91 都遇到了这个问题。

MuYiBo avatar Jul 08 '23 14:07 MuYiBo

这个问题我尝试解决了一下,在每次调用的时候,重新创建实例,看上去可以解决这个问题,还在实验中

xiaoqixiaoqi1113 avatar Jul 11 '23 02:07 xiaoqixiaoqi1113

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多)

想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

rictt avatar Jul 11 '23 06:07 rictt

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多)

想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

xiaoqixiaoqi1113 avatar Jul 12 '23 06:07 xiaoqixiaoqi1113

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多) 想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

如果有多并发的情况,会不会有问题啊,比如同时触发了多个请求就会建立多个ws链接 。

MuYiBo avatar Jul 12 '23 06:07 MuYiBo

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多) 想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

如果有多并发的情况,会不会有问题啊,比如同时触发了多个请求就会建立多个ws链接 。

我试了3并发,没问题,但是并发高了,就会报错,所以你如果并发高,我建议你弄多几个账号,弄一个账号池,然后每次请求都请求不同的账号,我目前就是这样处理的

xiaoqixiaoqi1113 avatar Jul 12 '23 06:07 xiaoqixiaoqi1113

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多) 想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

如果有多并发的情况,会不会有问题啊,比如同时触发了多个请求就会建立多个ws链接 。

我试了3并发,没问题,但是并发高了,就会报错,所以你如果并发高,我建议你弄多几个账号,弄一个账号池,然后每次请求都请求不同的账号,我目前就是这样处理的

报错的错误是什么呀。不同的账号服务部署在不同的服务器吗?还是在这一个服务里面做处理?我在想如果在一个服务里面处理,通过对象的形式区分,一个服务同时有多个账号的ws链接不确定有没有问题。我现在是不同的账号又重新部署了一个。

MuYiBo avatar Jul 12 '23 07:07 MuYiBo

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多) 想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

如果有多并发的情况,会不会有问题啊,比如同时触发了多个请求就会建立多个ws链接 。

我试了3并发,没问题,但是并发高了,就会报错,所以你如果并发高,我建议你弄多几个账号,弄一个账号池,然后每次请求都请求不同的账号,我目前就是这样处理的

报错的错误是什么呀。不同的账号服务部署在不同的服务器吗?还是在这一个服务里面做处理?我在想如果在一个服务里面处理,通过对象的形式区分,一个服务同时有多个账号的ws链接不确定有没有问题。我现在是不同的账号又重新部署了一个。

你可以放在同一个服务器啊,你只要在创建实例的时候,传不同账号的tokne还有会话id和服务器id就可以了

xiaoqixiaoqi1113 avatar Jul 12 '23 07:07 xiaoqixiaoqi1113

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多) 想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

如果有多并发的情况,会不会有问题啊,比如同时触发了多个请求就会建立多个ws链接 。

我试了3并发,没问题,但是并发高了,就会报错,所以你如果并发高,我建议你弄多几个账号,弄一个账号池,然后每次请求都请求不同的账号,我目前就是这样处理的

报错的错误是什么呀。不同的账号服务部署在不同的服务器吗?还是在这一个服务里面做处理?我在想如果在一个服务里面处理,通过对象的形式区分,一个服务同时有多个账号的ws链接不确定有没有问题。我现在是不同的账号又重新部署了一个。

你可以放在同一个服务器啊,你只要在创建实例的时候,传不同账号的tokne还有会话id和服务器id就可以了

哦哦,那就相当于每次处理任务的时候都把账号的信息传过来。每一个任务都是一个独立的实例。这个服务器其实只做了midjourney的生成和获取回调的功能。我最开始在腾讯云部署代理的时候就是这么搞的。

MuYiBo avatar Jul 12 '23 07:07 MuYiBo

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多) 想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

如果有多并发的情况,会不会有问题啊,比如同时触发了多个请求就会建立多个ws链接 。

我试了3并发,没问题,但是并发高了,就会报错,所以你如果并发高,我建议你弄多几个账号,弄一个账号池,然后每次请求都请求不同的账号,我目前就是这样处理的

报错的错误是什么呀。不同的账号服务部署在不同的服务器吗?还是在这一个服务里面做处理?我在想如果在一个服务里面处理,通过对象的形式区分,一个服务同时有多个账号的ws链接不确定有没有问题。我现在是不同的账号又重新部署了一个。

你可以放在同一个服务器啊,你只要在创建实例的时候,传不同账号的tokne还有会话id和服务器id就可以了

哦哦,那就相当于每次处理任务的时候都把账号的信息传过来。每一个任务都是一个独立的实例。这个服务器其实只做了midjourney的生成和获取回调的功能。我最开始在腾讯云部署代理的时候就是这么搞的。

你可以直接在服务端,写一个数组对象,把账号信息存起来,然后每次请求,都往下换一个不就好了,可以不用传信息过来,这样传信息过来,会有安全问题

xiaoqixiaoqi1113 avatar Jul 12 '23 07:07 xiaoqixiaoqi1113

看了作者的源代码是有websocket自动重连机制的,猜想是不是账号问题(毕竟反馈的人不多) 想过如果一个任务太久没回调就自动重启服务器,但会丢失任务队列等等问题出现;感觉可以试试你的创建实例😂

我这个方法我现在感觉无敌好用,而且作者还提供了client.Close();用来断开链接,现在我每请求一个,我就创建一个实例,然后请求结束以后就断开,看上去没任何问题

如果有多并发的情况,会不会有问题啊,比如同时触发了多个请求就会建立多个ws链接 。

我试了3并发,没问题,但是并发高了,就会报错,所以你如果并发高,我建议你弄多几个账号,弄一个账号池,然后每次请求都请求不同的账号,我目前就是这样处理的

报错的错误是什么呀。不同的账号服务部署在不同的服务器吗?还是在这一个服务里面做处理?我在想如果在一个服务里面处理,通过对象的形式区分,一个服务同时有多个账号的ws链接不确定有没有问题。我现在是不同的账号又重新部署了一个。

你可以放在同一个服务器啊,你只要在创建实例的时候,传不同账号的tokne还有会话id和服务器id就可以了

谢谢,后面这么试试。这个方案要是有问题可以再沟通哈 🙏

MuYiBo avatar Jul 12 '23 07:07 MuYiBo

这个问题我尝试解决了一下,在每次调用的时候,重新创建实例,看上去可以解决这个问题,还在实验中

每次重建 ws 实例,如果高并发的话,可以维护一个队列,队列只跑三个任务,起到削峰填谷的作用。

也可以复用 ws 实例,当然也要维护一个队列,队列空的时候,把实例销毁 ws.close,这个时候就不会让这个 ws 空跑一晚上了

shfshanyue avatar Jul 12 '23 08:07 shfshanyue

重新创建实例也不稳定

webpon avatar Aug 05 '23 15:08 webpon