我试图使用BaseHttpServer创建一个http代理,它基于SocketServer,它有2个异步Mixins(ThreadingMixIn和ForkingMixIn)
他们在每个请求上工作的那两个问题(为每个请求分配一个新线程或fork一个新的子进程)
是否有一个Mixin利用一个让我们说4个子进程和每个40个线程的池,所以请求由那些已经创建的线程处理?
因为这会带来巨大的性能提升,我想这会节省一些资源.
python concurrency asyncsocket socketserver python-multithreading
node.js中的函数式编程是否足够通用?它是否可以用于处理小批量的db记录而不在使用中将所有记录加载到内存中toArray(从而耗尽内存)的现实问题。您可以阅读有关背景的批评。我们想用异步生成器演示这种node.js库的Mux和DeMux以及fork / tee / join功能。
我在质疑使用任何函数式编程工具(例如ramda,lodash和imlazy)在node.js中进行函数式编程的有效性和普遍性)甚至自定义的。
来自MongoDB游标的数百万条记录可以使用 await cursor.next()
您可能需要阅读更多内容about async generators和for-await-of。
对于虚假数据,可以使用(在节点10上)
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function* getDocs(n) {
for(let i=0;i<n;++i) {
await sleep(1);
yield {i: i, t: Date.now()};
}
}
let docs=getDocs(1000000);
Run Code Online (Sandbox Code Playgroud)
我们需要
确保批次中包含第一个和最后一个文档,并且不消耗它们。
数百万条记录不应加载到ram中,应该对其进行迭代,最多只能保存其中的一批。
可以使用常规的nodejs代码完成此要求,但也可以使用诸如此处的 applyspec之类的方法来完成。
R.applySpec({
first: R.head(),
last: R.last(),
_: …Run Code Online (Sandbox Code Playgroud)