大家好
是这样的
就是我想建立一个celery任务,用来做某个事情, 需要每个5分钟运行
但是如果用一般的方法,假如这个任务有时候运行后,执行的时间大于了5分钟,那么它还没结束,celery又运行了一个任务,这样的话 就有2个一样的任务再运行了 我不想让这样的事情发生
我希望的是,无论如何 ,这个任务,同时,只能运行一次
于是我就发这个帖子来请教大家
比如任务名字叫 getName, 设置他每5分钟运行,这个任务是去爬某些数据,有时候,可能10秒就完成了, 有时候可能要10分钟
假如我 10点00分运行了getName,它本次可能要执行10分钟,那么当时间到了10点05分,celery如果开启第二个getName, 那么在10点06分的时候,就有2个getName在运行
我想的是, 能不能按照结束时间来算,比如 第一个getName是10点00分开启的,那么只要他没有结束,那么不管时间过去了多久,就都不开启新的任务; 比如时间过去了10分钟,到了10点10分,getName结束了,这时候celery开始计时。5分钟后,开始进行第二轮的celery运行
如此就可以达到互斥的效果
之前有朋友推荐我用 celery once [http://engineroom.trackmaven.com/blog/announcing-celery-once/] ,不过好像这个东西 不能实现我这样的效果哦
请问大家有什么好的方案吗
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.