我有一个烧瓶应用程序,在这里我向celery(工人)提交任务来执行它。这样我就可以在提交后取回网页。如果我把任务交给詹金斯,我能达到同样的效果吗?我只是想知道我为什么要用芹菜当我可以让詹金斯通过詹金斯API来安排/执行工作?还是把我的网页拿回来。我的方法可能有误,但任何能说明这一点的人都会非常感激。在
其主要目的是用户提交表单,该表单实际上是一个要执行的任务,点击提交任务从web上分离后,重新加载表单。同时,任务在后台运行,celery可以高效地完成任务,但可以通过jenkins完成。在
谢谢
Tags:
@Macintosh_89-为了子孙后代的缘故,添加我(非常晚)的答案。在
每个人都说HTTP,包括Jenkins,所以您的架构建议是可行的。(除非Celery的某些特定功能使其成为您的成功解决方案,否则您没有理由不能使用Jenkins实现相同的功能,例如Jenkins。)我建议使用Jenkins的“远程触发构建”选项,它为您提供了一个webhook。在
向该webhook发出适当的HTTP请求将触发生成作业运行。(附带说明:请确保将“身份验证令牌”设置为一个冗长的强值。)
作为一个额外的好处,我包含了一个bash脚本,我编写了这个脚本来测试对Jenkins作业的调用,并启用了“远程触发构建”。在
如果要使用此工具进行测试,请先在您的环境中设置以下各项:
^{pr2}$当然,您可以在您选择的语言中实现类似的功能。如果您想更深入地了解这里发生了什么(特别是在运行时如何构建uri),那么只需使用
bash -x
运行它。在以下几点要考虑比较芹菜和詹金斯。在
Celery是专门为在后台运行资源密集型任务而设计和构建的,而jenkins是一个更通用的自动化工具。
jenkins是基于java构建的,因此本地集成是存在的,尽管有插件可用;而celeri是用python构建的,所以您可以直接用python编写任务并将其发送给celeri,或者从python调用shell任务。
消息队列-同样,jenkins没有对消息代理的内置支持,所以排队对您来说可能很困难。Celery默认使用rabbitmq对任务进行排队,这样您的任务就不会丢失。
Celery还提供了简单的回调,所以当任务完成后,您可以运行一些函数。
相关问题 更多 >
编程相关推荐