我不想有一个漫长的过程。但同时,希望使用主管和工作进程。我该怎么做呢?
场景:每到午夜,我都会使用受监督的进程从外部API中获取数据。
但是,如果工人们完成他们的工作,我不希望这个过程一直持续到第二天。
在我的例子中,一个主管,五个池男孩进程总是存在的。
由于erlang进程很便宜,而且这些进程都是空闲的,我是否应该让主管部分作为我的applications
并每次启动,然后让它闲置呢?
或者,当工作进程完成时,我应该尝试杀死主管吗?
当我执行:observer.start
时,我可以看到我的依赖包中很少有进程已经启动。这样可以吗?我什么时候应该担心进程的数量?
发布于 2016-03-08 19:15:07
几个过程其实并不是什么大事。对于我开发的一个应用程序,我们测试了使用几百万个池男孩进程启动它,并且只需要1GB多一点的RAM就可以了。根据医生们
A newly spawned Erlang process uses 309 words of memory in the non-SMP emulator without HiPE support. (SMP support and HiPE support both add to this size.)
所以,真的,不要担心依赖关系会产生太多的进程。这没什么大不了的。
至于您的结构性问题,一种可能是使用一主管。然后,您就有一个cron作业,它向运行中的VM发送消息(如果web服务器正在运行,则可能是cURL POST请求)来执行批处理作业,或者使用定时器模块在指定的时间间隔内运行作业。
https://stackoverflow.com/questions/35881674
复制