使用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第三方库


热门话题
如何在javaswing中使用进度条,同时函数在繁重的进程中工作   SWIG(Java):如何调用带有void*out参数的函数?   java帮助解决算法问题   java,但我不想用try/catch块来包围语句!   可以从java类调用安卓类吗?   java流拆分器实现细节   java组织。莫基托。例外情况。滥用。无效使用MatcherException   java如何显示接收到的字符串?   java为什么这段代码不像JSR133建议的那样进入无限循环?   java BufferedReader readLine()从socket获取数据时冻结   java如何使用html表单发送的XML?   java RxJava与观察者代码的并行执行   我想使用CoreJava基于文本输入动态创建一个jpg图像   java如何在Mockito中模拟注入的bean?   java我的程序突然停止工作,我没有改变我记得的任何东西,现在它给出了第二个错误:javafx。fxml。加载异常   java树集排序错误   java RSA加密解密AES密钥并存储在文件中   Java将变量字符串[]与字符串混合在一个字符串数组中   如何在鼠标移动时重新绘制Java SWT应用程序?