repo地址
Github: https://github.com/johnmave126/tencent_scf
出发点
想给bilibili-helper写个小代理,部署在国内的云上。发现腾讯云的云函数有免费quota就去试用了一下。发现没有Rust就只能先用nodejs写了一个,但是浑身不得劲儿。想到腾讯的scf无非就是AWS Lambda改了个名,而AWS Lambda是有运行时的。那当然就是掏出vim开始造轮子...
和lambda_runtime
的不同之处
- 去掉了整套async系统。云函数这种东西本来就是同步的,在一个请求完成之前是不会接受下一个请求的,并行靠的是启动很多实例。如果用户真的需要异步,并发,完全可以自己套一个
tokio/async_std::block_on
。因此依赖变得轻量了一些。 - 由于去掉了async系统,和云进行网络请求用的是ureq而不是hyper。同样是减轻了依赖的大小。
- 加入了panic处理,使用了
catch_unwind
来捕获用户函数运行的panic。好处是保证了用户函数panic后一定会立即通知云,而不是等到超时。大多数纯函数自然是UnwindSafe
的,这部分函数panic以后运行时保证不崩溃,可以减少重复启动实例的初始化开销。 - 原生支持腾讯云上的触发器。目前只支持了Web API,以后会加入全套支持。
其他
- 例子和测试目前还有点少,慢慢加
- 最后当然是写了代理,放在了examples里,和node版本比,大大大量降低了内存开销。运行速度由于主要还是网络瓶颈,所以暂时看不出来。之后搞个计算密集的例子来对比一下。
- 欢迎试用,提issue,搞pr
Ext Link: https://github.com/johnmave126/tencent_scf
1
共 1 条评论, 1 页
评论区
写评论膜~