异步运行任务,永远不会同时运行

时间:2016-10-26 15:45:44

标签: asynchronous rabbitmq celery beanstalkd python-rq

我想知道是否有一种异步运行任务的方式将在后台运行(例如使用Celery)从不同时运行?

这意味着,每个任务可以自己同时运行,但不能与另一个干扰第一个任务操作的任务一起运行。
例如,

  • 任务A:从文件中读取(可以与其同时运行(与从文件中读取的其他任务)
  • 任务B:写入文件(不应与读取任务同时运行(使用任务A))

基本上,我需要的是任务A和B找出其他任务是否正在运行以及是否正在运行的方式,然后延迟自己并等待它完成(可能阻塞任务队列)

为任务定义队列是否可以解决问题?或者它只是一个执行任务的队列(所以它会在队列中执行第二个任务而不等待第一个任务的结果)?

在这里使用锁定我唯一的解决方案?

如果锁定解决方案是唯一的,那么实施的正确方法是什么?
我发现了这个: Ensuring a task is only executed one at a time
但是它使用django的缓存作为锁,我没有在django环境中运行我的程序,所以它对我不起作用。

0 个答案:

没有答案