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

是否支持timeout机制? #8

Open
liyizhecn opened this issue Apr 16, 2021 · 5 comments
Open

是否支持timeout机制? #8

liyizhecn opened this issue Apr 16, 2021 · 5 comments

Comments

@liyizhecn
Copy link

规则对用户暴露,如果用户创建了长时运行的规则,是否有超时机制直接停止该条规则执行,从而防止引擎被阻塞。

@rencalo770
Copy link
Collaborator

这个要分情况了,如果本身就是需要执行那么长时间,显然用户应该是清楚的,在pool中执行的时候只会占用一个具体的gengine实例,只要将pool len设置长一点,确保请求来的时候有足够的实例提供服务就行;
如果是因为数据库卡顿、外部请求导致的长时间阻塞,那么这个直接对具体的数据库,或者request设置timeout即可;
如果是因为bug导致的长时间不释放,那就去解决bug就好啦

@liyizhecn
Copy link
Author

liyizhecn commented Apr 19, 2021

感谢回复。
引擎开发和规则的运营,可能(大概率)是两个不同的团队,而规则运营团队不关心引擎底层实现。
因此引擎需要一个自我保护的机制,避免被运营团队搞死,例如:

  1. 运营团队提交了一个引用三方服务,但未设置超时时间的规则
  2. 运营团队提交的规则有bug
  3. 运营团队提交了一个测试性质的规则,他们自己可能也不太确定要跑多久

那么,此时可能需要一个自动的或者可以外部调用的kill方法,能(仅)将该条规则的运行时强制关闭,并下线。

@rencalo770
Copy link
Collaborator

等我们上线了ui之后,我们会进一步思考这个机制

@liyizhecn
Copy link
Author

看上去可以借鉴 context.WithTimeout 的思路

@rencalo770
Copy link
Collaborator

看上去可以借鉴 context.WithTimeout 的思路

context的timeout可行!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants