优雅而耐心地重启服务器

时间:2016-01-26 12:37:43

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有一个执行许多自动任务的应用程序,有时会通过执行重启来打破链条,并且需要手动修复这些混乱。

有没有办法检查控制器/模型是否有正在运行的进程,只在完成后再执行重启?

由于

1 个答案:

答案 0 :(得分:2)

如果您使用的是python,则可以使用celery之类的作业队列来执行此操作。

您可以按照以下教程并将任务添加到作业队列,并使用提供的后端获取状态和任务等待它完成。

http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html

首先使用作业队列

定义任务
from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

@app.task
def add(x, y):
    return x + y

然后运行芹菜工人:

celery -A tasks worker --loglevel=info

现在您可以使用作业队列运行该功能:

>>> from tasks import add
>>> result = add.delay(4, 4)

您可以通过运行以下命令等待结果:

>>> result.wait()