使用gevent和绿色线程的后台任务管理。

gevent-tasks的Python项目详细描述


gevent任务

pypidocsMIT License

使用gevent和绿色线程的后台任务管理器。

这个库的目的是允许开发人员在后台运行任意的“任务” 固定/规范化间隔上的线程。每个任务都是一个包装的 可调用的,它至少接受一个参数task,一个对自身的引用。时间安排 相关的元数据可以通过task值以及 为将来的事件停止并重新安排时间。

TaskManager有一个运行TasksTaskPool

安装

pypi的最新版本,

$ pip install gevent-tasks

源代码中的最新开发版本,

$ pip install git+git@github.com:blakev/gevent-tasks.git@develop

示例

一个典型的例子,

# print our system uptime every minute, indefinitelyfromdatetimeimporttimedeltafromgevent_tasksimportTaskManager,cronmanage=TaskManager()@manage.task(interval=cron('* * * * *'))defsystem_uptime(task):withopen('/proc/uptime','r')asf:uptime_seconds=float(f.readline().split()[0])uptime=str(timedelta(seconds=uptime_seconds))print(uptime)manage.forever(stop_after_exc=False)

捏造的例子,

fromgevent.monkeyimportpatch_allpatch_all()fromgevent_tasksimportTask,TaskManager,TaskPoolfrommyapp.tasksimportcheck_websockets,check_uptime,check_healthpool=TaskPool(size=25)manager=TaskManager(pool=pool)manager.add_many(Task('WebsocketHealth',check_websockets,interval=7.5),Task('ApplicationHealth',check_uptime,interval=30.0),Task('SystemHealth',check_health,args=('localhost',),interval=2.5))manager.start_all()....http_server.serve_forever()

使用^{} 模块我们可以用cron语法定义间隔,

fromgevent_tasksimportTask,cron....Task('ShowCharts',show_charts,interval=cron('* * * * *'),timeout=30.0)

manager实例还可以通过decorator注册任务。打电话 TaskManager.forever()将阻止代码,直到不再有计划的任务或直到Exception 在一个正在运行的任务中引发。

manage=TaskManager()@manage.task(interval=cron('* * * * *'))defevery_minute(task,*args):print('hi',args,task,task.timing)manage.forever()

您还可以引用上一个返回值,从而允许任务建立在 随着时间的推移,没有人与程序的交互。

@manage.task(interval=1)defrandom_number(task):num=random.randint(0,100)print(task.value,num)returnnum..output..None51515050888826

归因

这个模块主要依赖于^{} 项目的所有核心功能。

麻省理工学院执照

版权所有(c)2017 Blake Vandemerwe

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用“Wed,01 Jul 2015 17:32:41 EDT”解析字符串   java Storm apache升级(1.0.0到2.0.0)   java类驻留在不同的目录中,而不是包指定的目录。为什么?   将Java中的图像缩放到非常小的维度   java如何通过子文档从自定义方面访问ElasticSearch parentdoc字段   java如何在RationalSoftwareArchitect中使用findbugs?   Java中的事件提升处理   java值被添加到arrayList的所有索引中,而不是在“”时添加到最后一个索引中。正在使用arraylist的add()方法   JFrame中的java JPanel派生类   java如何用循环和异步方法模拟类   java Android阻止可绘制背景超出视图范围   为客户排序Java阵列   java Apache poi如何将工作表设置为枚举位置值属性?   java Rhino在使用自定义类参数调用javascript函数时出错   java格式化日期从年月日到年月日   spring如何修复java。lang.illegalargumentexception在此特定场景中是否尝试创建具有null实体的合并事件?   java如何创建更好的对象