私はセロリの作業を開始できるフラスコのアプリケーションを持っています。この作業は、私が一度だけ起動したいデーモンのようなものです。だから私が望むのは、その状態を監視し、タスクなどから何らかのメッセージを表示することです。これはすべてうまくいきます。セロリのタスクが既に起動しているかどうかを知る方法
私はそれを行う方法を理解できませんが、フラスコのアプリケーションでは、起動後にタスク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を取得できますか?
@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')
:私はタスクIDを取得することができれば、セロリサーバを実行してフラスコアプリケーションを実行し、フラスコアプリケーションwhithinからセロリタスクを開始、見にメインページをリロードします。今の私が試した何
でも、_t
の変数は、セロリ・タスクが実行中であっても常にNone
です。
これはCeleryを使用する悪い方法であり、長い実行中のタスクを1つホストするように設計されていないことに注意してください。あなたがここで何を求めているか正確に分かります。おそらく、['Manager'](https://docs.python.org/3/library/multiprocessing.html#managers)が必要です。 – davidism
どのバックエンドで使用していますか? – georgexsh
セレスリーバックエンド用のredis – GuillaumeA