【发布时间】:2017-10-19 20:44:18
【问题描述】:
我有一个可以启动 celery 任务的 Flask 应用程序。这个任务是一种我只想启动一次的守护进程。所以当它启动时,我想要的只是监控它的状态,显示任务中的一些消息等。这一切都很好。
我不知道该怎么做,是如何在烧瓶应用程序中,一旦启动就可以获取任务 ID。当我开始我可以做的任务时
@main.route('/start', methods=['POST'])
def start():
task = long_task.apply_async()
# from here I know the id with 'task.id'
return jsonify({}), 202
所以我有任务的 ID。
现在,假设我重新启动了 celery 服务器或者我终止了任务,我如何检查这样的任务是否正在运行?如果它正在运行,我如何检索它的 id ?
我现在尝试的是:运行一个 celery 服务器,运行一个烧瓶应用程序,从烧瓶应用程序中启动一个 celery 任务,重新加载主页以查看我是否可以检索任务 ID:
@main.route('/', methods=['GET', 'POST'])
def index():
"""Renders the home page."""
_t = celery.current_task
if _t is not None:
t_id = toto.request.id
return render_template('main/index.html', title='Main page')
但_t 变量始终为None,即使在 celery 任务正在运行时也是如此。
【问题讨论】:
-
您使用的是哪个结果后端?
-
芹菜后端的redis