我有一个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。
现在,想象一下,我重新启动芹菜服务器或我杀了任务,我该如何检查这样的任务是否正在运行?如果它正在运行,我如何检索它的ID?
我试过了现在:运行芹菜服务器,运行的烧瓶中的应用,从whithin烧瓶应用程序启动芹菜任务,重新加载主页,看看我是否可以检索任务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的不好的方法,它不是用来托管一个长时间运行的任务。你在这里问到的正是你的要求。您可能需要['Manager'](https://docs.python.org/3/library/multiprocessing.html#managers)。 – davidism
哪个结果是你使用的后端? – georgexsh
redis用于芹菜后端 – GuillaumeA