我有一个烧瓶REST端点,它执行一些cpu密集型图像处理,并需要几秒钟才能返回.通常,此端点被调用,然后由客户端中止.在这些情况下,我想取消处理.我怎么能在烧瓶中做到这一点?
在node.js中,我会做类似的事情:
req.on('close', function(){
//some handler
});
Run Code Online (Sandbox Code Playgroud)
我期待烧瓶有类似的东西,或者我可以在处理过程中检查某些点的同步方法(request.isClosed()),如果关闭则返回,但我找不到.
我考虑发送一些东西来测试连接是否仍然打开,如果失败则捕获异常,但似乎Flask缓冲所有输出,因此在处理完成并尝试返回结果之前不会抛出异常:
已建立的连接已由主机中的软件中止
如果客户端中止他们的请求,我怎样才能取消处理中途?
我有2个对象列表:
people =
[{id: 1, name: "Tom", carid: 1},
{id: 2, name: "Bob", carid: 1},
{id: 3, name: "Sir Benjamin Rogan-Josh IV", carid: 2}];
cars=
[{id: 1, name: "Ford Fiesta", color: "blue"},
{id: 2, name: "Ferrari", color: "red"},
{id: 3, name: "Rover 25", color: "Sunset Melting Yellow with hints of yellow"}];
Run Code Online (Sandbox Code Playgroud)
是否有一个函数(可能在Angular,JQuery,Underscore,LoDash或其他外部库中)在这些函数的一行中进行左连接?就像是:
peoplewithcars = leftjoin( people, cars, "carid", "id");
Run Code Online (Sandbox Code Playgroud)
我可以编写自己的,但如果LoDash有一个优化版本,我想使用它.
我正在寻找一种计划任务的方法,其中任务在几个先前的任务完成后开始.
我有几百个"收集器"进程,它从各种源收集数据并将其转储到数据库.一旦这些已经完成收集(从1秒到任何地方几分钟)我要立即揭开序幕一堆"数据处理"过程的分析,并在数据库中的数据的意义.当所有这些都完成后,我想要开始最终任务并向我发送摘要数据的电子邮件.
我目前正在使用Gearman队列并在我希望"收集器"进程完成后在计时器上启动数据处理任务,但这意味着处理步骤在10分钟后开始,即使收集器进程在3之后完成(或者更糟糕的是,还没有完成).
理想情况下,我可以指定特定的规则,例如"当进程A和(B或C)完成时启动进程X",或"当95%的指定进程已完成或已经过去10分钟时启动进程Y".
需要自动创建进程和依赖项,因为每次都会使用不同的参数运行(即,我每次都没有进行相同的计算).
我可以写某种使用队列和监控自己的图形依赖性框架,但它似乎像这种东西必须已经解决了,我找人谁使用像我描述.