Giter Club home page Giter Club logo

Comments (19)

ydf0509 avatar ydf0509 commented on June 15, 2024

是单独启动另一个web服务。实际上原理就很简单,如果在装饰器设置任务持久化,他是自动批量聚合把状态结果发布到mongodb里面去了,然后有一个web服务需要单独启动,web 实时不停读取mongodb的数据展示到页面上。

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

和python脚本自身的日志相比,页面的有2到4秒的延迟。这些执行结果信息在日志中全部都有了,框架很注重日志流程细节,你说的这些重要流程节点,对每一个任务都会打印和保存日志的

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

image

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

看到文档中有提到可视化的任务状态页面,请问应该如何获取这些数据来构建自定义的可视化页面?

你看下这个图片,你说的这些执行结果,耗时,入参在python自身日志已近打印和保存文件了。你设置装饰器任务持久化为True,然后启动web也可以看到这些信息。

from distributed_framework.

RongRongJi avatar RongRongJi commented on June 15, 2024

我将参数设置成了

function_result_status_persistance_conf=FunctionResultStatusPersistanceConfig(True, True, 7 * 24 * 3600)

现在它确实可以在mongodb里面显示已经执行完成的任务。我观察到当任务执行完成才会加入到mongoDB中,但是如果一个任务需要执行非常长的时间,我想要监控它的运行情况,是否有一个可行的方案呢?

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

我将参数设置成了

function_result_status_persistance_conf=FunctionResultStatusPersistanceConfig(True, True, 7 * 24 * 3600)

现在它确实可以在mongodb里面显示已经执行完成的任务。我观察到当任务执行完成才会加入到mongoDB中,但是如果一个任务需要执行非常长的时间,我想要监控它的运行情况,是否有一个可行的方案呢?

是的,确实是执行完成后才会增加到mongo,然后才能显示到页面。此框架希望用户的函数耗时是10分钟以内比较合适,你的任务多久时间?

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

一个函数是一个最小的粒度,并不可能知道一个函数执行的进度是是执行到了哪一行,函数的执行进度是到了百分之多少,只能让函数作为一个整体,要么是执行中要么是执行完成。你想时刻监控一个函数的内部执行到了百分之多少的进度这是不可能的。

from distributed_framework.

RongRongJi avatar RongRongJi commented on June 15, 2024

可能会比较长时间,例如周期性地执行深度学习任务。不知道是否能让用户看到“xx任务正在执行”这样的信息?

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

可能会比较长时间,例如周期性地执行深度学习任务。不知道是否能让用户看到“xx任务正在执行”这样的信息?

执行中状态我可以加,但是不能加函数内部运行耗时的精确进度。

from distributed_framework.

RongRongJi avatar RongRongJi commented on June 15, 2024

不需要精确的进度。如果可以获取到执行中的任务的id,也方便我们做额外的拓展,例如将id和用户关联起来,让每个用户都可以只看到自己的任务。

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

可以加个pending状态到mongodb,然后执行完成后再把结果和执行时候正常更新mongo。

from distributed_framework.

RongRongJi avatar RongRongJi commented on June 15, 2024

非常感谢,希望加入pending和active

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

active代表什么,只会有peding和finish

from distributed_framework.

RongRongJi avatar RongRongJi commented on June 15, 2024

等待中、执行中、执行完成?

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

等待中、执行中、执行完成?
浪费性能感觉这样,这个框架是追求每秒万次函数执行,你说的这么搞浪费性能,主要是不适用。如果你能看到可以改这个方法,AbstractConsumer 的 _run_consuming_function_with_confirm_and_retry

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

等待中、执行中、执行完成?

可以看看框架的rpc模式张杰,使用rpc模式就能够获取是否是正在执行和获取函数结果。rpc模式扩展性很强,使得程序外部可以获得程序内部的任务状态。

from distributed_framework.

RongRongJi avatar RongRongJi commented on June 15, 2024

看了一下文档,请问rpc的status_and_result应该如何和fsdf_background_scheduler.add_job结合起来?以及它是否只支持redis?

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

看了一下文档,请问rpc的status_and_result应该如何和fsdf_background_scheduler.add_job结合起来?以及它是否只支持redis?

那是个问题,手动发布fun.push()s是返回一个对象,可以得到task_id和结果。fsdf_background_scheduler.add_job是程序内部自动定时发布任务到中间件,所以你在程序外部无法得到task_id是什么,需要对框架代码改造那。

from distributed_framework.

ydf0509 avatar ydf0509 commented on June 15, 2024

看了一下文档,请问rpc的status_and_result应该如何和fsdf_background_scheduler.add_job结合起来?以及它是否只支持redis?

rpc模式固定使用的是redis实现的,就是不管broker_kind选用什么消息中间件,如果要使用rpc模式即从发布端得到消费端结果,就一定要配置好redis的账号密码。框架支持20种消息队列中间件可选,但如果要使用框架的rpc模式和任务过滤功能(函数入参过滤)以及分布式控频这三个功能,就必须配置好redis账号密码。因为我没那么多精力去实现所有类型中间件本身的rpc模式,例如mysql rabbitmq kafka 都可以拿来原生实现或模拟实现rpc,但我没那么多时间,反正redis是很常用的几乎每个人都安装了。

from distributed_framework.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.