用于将基于python的计算封装到可部署和可分发任务中的工具包

werkit的Python项目详细描述


WERKIT

versionpython versionslicensebuildcode style

用于将基于python的计算封装到可部署和 可分配任务。

提供有助于打包的代码:

它们对于跨不同的 服务或不同服务的修订。

安装

pip install werkit

用法

fromwerkitimportManagerdefmyfunc(param,verbose=False,handle_exceptions=True):withManager(handle_exceptions=handle_exceptions,verbose=verbose)asmanager:manager.result=do_some_computation()returnmanager.serialized_result

并行计算

werkit支持使用redis和rq进行并行计算。

必须分别安装依赖项:

pip install redis rq

请求工作

frommylibimportmyfuncfromwerkit.parallelimportinvoke_for_eachitems={'a':...,'b':...}job_ids=invoke_for_each(myfunc,items,connection=Redis.from_url(...))

执行工作

pip install redis rq
rq worker --burst werkit-default --url rediss://...

注意:mylib.myfunc必须是可导入的。

使用cloudmanager

代替低级api,您可以使用cloudmanager进行调用:

#!/usr/bin/env pythonimportclickfromwerkit.parallelimportConfig,CloudManager,invoke_for_eachmanager=CloudManager(config=Config(local_repository="my-project",ecr_repository="123456789012.dkr.ecr.us-east-1.amazonaws.com/my-project",ecs_task_name="my-project",task_args=["--cpu","1024","--memory","2048","--task-role","arn:aws:iam::123456789012:role/...","--security-group-id","sg-...","--subnet-id","subnet-...",],default_task_count=5,))@click.group()defcli():pass@cli.command()deflogin():manager.login()@cli.command()@click.argument("tag")defbuild_and_push(tag):manager.build_and_push()@cli.command()defenqueue():frommyprojectimportmyfuncitems={"key1":"value1","key2":"value2"}invoke_for_each(measure_body,items,clean=True,connection=manager.redis_connection,)@cli.command()@click.option("--count",default=manager.config.default_task_count,type=int,help="Number of tasks to run",)@click.argument("tag")defrun(count,tag):manager.run(tag=tag,count=count)@cli.command()defdashboard():manager.dashboard()@cli.command()defps():manager.ps()@cli.command()defget_results():print(manager.get_results())@cli.command()defclean():manager.clean()if__name__=="__main__":cli()

获得结果

fromredisimportRedisfromwerkit.parallelimportget_resultsget_results(wait_until_done=True,connection=Redis.from_url(...))

监测

您可以使用RQ Dashboardother methods outlined here

贡献

拉请求欢迎!

支架

如果你有问题,请告诉我们。

许可证

这个项目是根据麻省理工学院的许可证授权的。

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

推荐PyPI第三方库


热门话题
java“抹去”了整个swing GUI,只有一个组件例外   有人能解释一下为什么这个用来反转字符串的Java程序不起作用吗?   jar使用java代码发送电子邮件   java如何使用keyRelease连续激发筛选表?   安卓 studio在java中执行lua脚本   java在实现StatefulJob时,“延迟”是什么意思?   当我再次尝试上传时,java Android无法查看保存在新目录中的图像   爪哇岩布剪刀问题只返回一半结果   使用Jersey Rest客户端进行java异步大文件上载   Java日历。加错年份   java对于多个autosize文本视图只有一个大小   java JodaTime:句点、间隔和持续时间之间有什么区别?   java对返回数据的正确处理   多线程多线程在java中打印偶数和奇数?   摆动Java弹跳球移动   httpconnection Java HttpUrlConnection抛出连接被拒绝   寻找C#的XmlConvert的Java等价物。编码名称   jetty在一个cookie Java代码中设置多个值   使用maven构建java jar显示错误   java我可以只使用输入在iText中生成超级脚本吗?