Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

http请求模块流转异常 #1290

Closed
2 of 3 tasks
fevolq opened this issue Apr 25, 2024 · 20 comments
Closed
2 of 3 tasks

http请求模块流转异常 #1290

fevolq opened this issue Apr 25, 2024 · 20 comments
Labels
bug Something isn't working

Comments

@fevolq
Copy link

fevolq commented Apr 25, 2024

例行检查

  • [x ] 我已确认目前没有类似 issue
  • [x ] 我已完整查看过项目 README,以及项目文档
  • [x ] 我使用了自己的 key,并确认我的 key 是可正常使用的
  • [x ] 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • 公有云版本
  • 私有部署版本, 具体版本号: v4.7

问题描述
http请求失败后,流程直接终止了,无法进行下一个流程。
复现步骤

  1. 使用一个无法访问的链接
  2. http请求后续再连接其他流程
    预期结果
    无论http是否响应200,都应在结束后走到下一个流程,而且把内容传过去
    相关截图
    image
    image
@fevolq fevolq added the bug Something isn't working label Apr 25, 2024
@c121914yu
Copy link
Collaborator

@LuKing4DB
Copy link

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

@c121914yu
Copy link
Collaborator

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

不正常运行意义在哪里

@LuKing4DB
Copy link

这个优化的结果是剥夺了用户对于流程的错误处理。插件报错程序关闭了,好比我现在用的chrome一个插件不能用,整个浏览器都关掉一样。

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

不正常运行意义在哪里

@fevolq
Copy link
Author

fevolq commented May 20, 2024

这是把http请求异常时的报错推出给用户界面了?我也感觉这个优化不好。
在应用http模块时,链接请求发生异常的情况很正常,这时候我需要它继续走下一步的流程,即便是将原始的http返回的错误信息传过去都行,这些可以在后面的流程进行处理,但是它不能强行中断整个流程。

@c121914yu
Copy link
Collaborator

这是把http请求异常时的报错推出给用户界面了?我也感觉这个优化不好。
在应用http模块时,链接请求发生异常的情况很正常,这时候我需要它继续走下一步的流程,即便是将原始的http返回的错误信息传过去都行,这些可以在后面的流程进行处理,但是它不能强行中断整个流程。

那你应该设置接口不要报错,而是返回错误信息

@c121914yu
Copy link
Collaborator

c121914yu commented May 20, 2024

这个优化的结果是剥夺了用户对于流程的错误处理。插件报错程序关闭了,好比我现在用的chrome一个插件不能用,整个浏览器都关掉一样。

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

不正常运行意义在哪里

这个比喻不好,浏览器和插件独立的。节点直接是有相互关系的。
如果谷歌搜索接口报错了,还要继续展示搜索结果,非常奇怪。
正常程序,如果希望错误了继续,肯定是捕获错误单独处理,而不是让它直接继续。

@fevolq
Copy link
Author

fevolq commented May 20, 2024

这个优化的结果是剥夺了用户对于流程的错误处理。插件报错程序关闭了,好比我现在用的chrome一个插件不能用,整个浏览器都关掉一样。

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

不正常运行意义在哪里

这个比喻不好,浏览器和插件独立的。节点直接是有相互关系的。 如果谷歌搜索接口报错了,还要继续展示搜索结果,非常奇怪。 正常程序,如果希望错误了继续,肯定是捕获错误单独处理,而不是让它直接继续。

但是请求的url不一定是自己写的服务,如果请求的是别人的链接呢,怎么捕获异常

@c121914yu
Copy link
Collaborator

c121914yu commented May 20, 2024

这个优化的结果是剥夺了用户对于流程的错误处理。插件报错程序关闭了,好比我现在用的chrome一个插件不能用,整个浏览器都关掉一样。

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

不正常运行意义在哪里

这个比喻不好,浏览器和插件独立的。节点直接是有相互关系的。 如果谷歌搜索接口报错了,还要继续展示搜索结果,非常奇怪。 正常程序,如果希望错误了继续,肯定是捕获错误单独处理,而不是让它直接继续。

但是请求的url不一定是自己写的服务,如果请求的是别人的链接呢,怎么捕获异常

单独写一个服务去捕获。或者换稳定的服务商

@fevolq
Copy link
Author

fevolq commented May 20, 2024

这个优化的结果是剥夺了用户对于流程的错误处理。插件报错程序关闭了,好比我现在用的chrome一个插件不能用,整个浏览器都关掉一样。

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

不正常运行意义在哪里

这个比喻不好,浏览器和插件独立的。节点直接是有相互关系的。 如果谷歌搜索接口报错了,还要继续展示搜索结果,非常奇怪。 正常程序,如果希望错误了继续,肯定是捕获错误单独处理,而不是让它直接继续。

但是请求的url不一定是自己写的服务,如果请求的是别人的链接呢,怎么捕获异常

单独写一个服务去捕获。

这样的话,内置的http模块就没意义了,我为什么不直接自己封装一个插件,用来请求外部链接

@c121914yu
Copy link
Collaborator

c121914yu commented May 20, 2024

这个优化的结果是剥夺了用户对于流程的错误处理。插件报错程序关闭了,好比我现在用的chrome一个插件不能用,整个浏览器都关掉一样。

感觉是一个负优化。导致流程进行必须依赖于插件的正常运行?

不正常运行意义在哪里

这个比喻不好,浏览器和插件独立的。节点直接是有相互关系的。 如果谷歌搜索接口报错了,还要继续展示搜索结果,非常奇怪。 正常程序,如果希望错误了继续,肯定是捕获错误单独处理,而不是让它直接继续。

但是请求的url不一定是自己写的服务,如果请求的是别人的链接呢,怎么捕获异常

单独写一个服务去捕获。

这样的话,内置的http模块就没意义了,我为什么不直接自己封装一个插件,用来请求外部链接

因为封装插件也需要HTTP。更大意义在于,让你提高你HTTP服务的质量,别老是挂。

@LuKing4DB
Copy link

不正常运行意义在哪里

这个比喻不好,浏览器和插件独立的。节点直接是有相互关系的。 如果谷歌搜索接口报错了,还要继续展示搜索结果,非常奇怪。 正常程序,如果希望错误了继续,肯定是捕获错误单独处理,而不是让它直接继续。

那你这不是承认了4.8版本不是正常程序,因为他不能捕获错误且单独处理。多的也不想争。看来提issue没啥用,fork自己改吧。

@c121914yu
Copy link
Collaborator

c121914yu commented May 21, 2024

不正常运行意义在哪里

这个比喻不好,浏览器和插件独立的。节点直接是有相互关系的。 如果谷歌搜索接口报错了,还要继续展示搜索结果,非常奇怪。 正常程序,如果希望错误了继续,肯定是捕获错误单独处理,而不是让它直接继续。

那你这不是承认了4.8版本不是正常程序,因为他不能捕获错误且单独处理。多的也不想争。看来提issue没啥用,fork自己改吧。

那是你接口不能捕获错误处理,和哪个版本有啥关系。提 issue 又没有足够理由能支撑,有什么用?

@fevolq
Copy link
Author

fevolq commented May 21, 2024

http模块,应该是为了方便工作流能连接任何的外部数据(并且不需要通过自己的个人插件,否则任何人需要使用http都需要自己优先写一个服务端来转发),而外部链接就存在各种情况,你不能要求工作流的完整执行一定要依赖http的成功。

image

@c121914yu
Copy link
Collaborator

http模块,应该是为了方便工作流能连接任何的外部数据(并且不需要通过自己的个人插件,否则任何人需要使用http都需要自己优先写一个服务端来转发),而外部链接就存在各种情况,你不能要求工作流的完整执行一定要依赖http的成功。

image

如果我确实是强依赖HTTP的结果进行下一步(否则可能出现错误答案),那应该如何处理呢?

@c121914yu
Copy link
Collaborator

一个常见的例子:
我有两个HTTP,第一个HTTP会请求用户信息,然后是调用模型分析用户信息,最后是调用HTTP存储用户信息。
那么,假设我的第一个接口报错了,模型还继续分析(虽然不会得到任何结果,但是会费token),然后再进行HTTP存储,此时肯定不会存储到内容。
最终,我需要给用户一段反馈,那么他最终得到的,依然是一个报错,并且是存储的报错,而不是获取信息的报错。

@c121914yu
Copy link
Collaborator

一个常见的例子: 我有两个HTTP,第一个HTTP会请求用户信息,然后是调用模型分析用户信息,最后是调用HTTP存储用户信息。 那么,假设我的第一个接口报错了,模型还继续分析(虽然不会得到任何结果,但是会费token),然后再进行HTTP存储,此时肯定不会存储到内容。 最终,我需要给用户一段反馈,那么他最终得到的,依然是一个报错,并且是存储的报错,而不是获取信息的报错。

image
我给他做了优化

@fevolq
Copy link
Author

fevolq commented May 22, 2024

一个常见的例子: 我有两个HTTP,第一个HTTP会请求用户信息,然后是调用模型分析用户信息,最后是调用HTTP存储用户信息。 那么,假设我的第一个接口报错了,模型还继续分析(虽然不会得到任何结果,但是会费token),然后再进行HTTP存储,此时肯定不会存储到内容。 最终,我需要给用户一段反馈,那么他最终得到的,依然是一个报错,并且是存储的报错,而不是获取信息的报错。

image 我给他做了优化

你自己都写了,在http后面对这个请求结果进行判断,成功会怎么进行,失败会怎么进行。主要是流程不能被http来中断

@c121914yu
Copy link
Collaborator

一个常见的例子: 我有两个HTTP,第一个HTTP会请求用户信息,然后是调用模型分析用户信息,最后是调用HTTP存储用户信息。 那么,假设我的第一个接口报错了,模型还继续分析(虽然不会得到任何结果,但是会费token),然后再进行HTTP存储,此时肯定不会存储到内容。 最终,我需要给用户一段反馈,那么他最终得到的,依然是一个报错,并且是存储的报错,而不是获取信息的报错。

image 我给他做了优化

你自己都写了,在http后面对这个请求结果进行判断,成功会怎么进行,失败会怎么进行。主要是流程不能被http来中断

重点是~ 没能提出解决方案。

@fevolq
Copy link
Author

fevolq commented May 22, 2024

可以考虑给http多增加一个状态码的输出

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants