使用gevent和绿色线程的后台任务管理。
gevent-tasks的Python项目详细描述
gevent任务
使用gevent和绿色线程的后台任务管理器。
- 签出the documentation。
- 了解Gevent。
这个库的目的是允许开发人员在后台运行任意的“任务”
固定/规范化间隔上的线程。每个任务都是一个包装的
可调用的,它至少接受一个参数task
,一个对自身的引用。时间安排
相关的元数据可以通过task
值以及
为将来的事件停止并重新安排时间。
TaskManager
有一个运行Tasks
的TaskPool
。
安装
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()
使用^{
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
兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:
上述版权公告及本许可公告须包括在 软件的拷贝或大部分。
本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。