Cholerae Hu
Cholerae Hu
/cc @panjf2000
你说的这些都是实现问题了。从功能上来说,就是希望当池子被用满的时候,高优先级队列可以被确保插队来执行。现在我理解是不能的吧。现在如果池子已经满了,有一些请求阻塞在 Submit 这里,怎么保证高优任务优先执行呢
多个 pool 就有很多管理难度,我就需要监控多个 pool,参数里也要调整多个 pool 的大小,而且高优队列可能处于长期闲置状态,在平时浪费资源。
1. 在外部实现,这很难。一个比较好的优先级调度功能,肯定是侵入里面的。试想一下,你想基于 go scheduler 实现一个自己的优先级调度功能,怎么实现?很难实现,只能侵入进去。 至于说业务逻辑不业务逻辑,linux 调度器是有优先级调度的,erlang 调度器也是有优先级调度的,可能他们都是为了实现一些业务逻辑罢。 2. 实现上可以再考虑,我说的多个队列这种只是借用了 deadline 调度算法的实现,实际上可以开一个接口出来,比如 linux io 调度器的接口是 https://elixir.bootlin.com/linux/latest/source/kernel/sched/sched.h#L1684,仅供参考。
priority queue 太简单了,很容易就饿死了。
@tmpbook 这跟消息队列没啥关系
Thanks! Else LGTM.
Could you please try to change https://github.com/choleraehyq/aiorpc/blob/master/aiorpc/log.py#L10 to set log level to DEBUG to print more logs?
Or can you upload a example for me to reproduce this error?
Sorry for my late response. It seems there's something wrong with serialization or deserialization, as the first abnormal log is ``` 2018-06-10 13:19:43,754 aiorpc.aiorpc.connection DEBUG sending raw_req b'\x94\x01\xff\xb0Invalid protocol\xc0' to...