私はセロリインスタンスをインスタンス化するFlask Celeryアプリを持っています。 私はビューのの.pyファイルの観点から、私は同じの.pyファイルに通常のフラスコルートを追加することができ、私は二度同じコードを実行する必要があることを理解する:フラスコセロリアプリと通常のフラスコアプリ(それらを同時に同時に動作させる方法)
労働者を実行します。
%セロリワーカーの-A app.celery ...
を実行し、通常のフラスコアプリと同じコード:
%パイソンapp.py ...
私の質問です:
celery.control.purge()
celery.control.inspect() etc ???
はここに私のコードです:通常のフラスコアプリが真に独立したプロセスは、セロリアプリからであれば、その後、私はフラスコルートから実行しているセロリのインスタンスを操作することができるかのような何かをします:
import os
import random
import time
from flask import Flask, request, render_template, session, flash, redirect, \
url_for, jsonify
from celery import Celery
app = Flask(__name__)
# Celery configuration
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'
# Initialize Celery
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
@celery.task
def send_async_email(msg):
"""Background task to send an email with Flask-Mail."""
with app.app_context():
mail.send(msg)
@app.route('/purge', methods=['GET', 'POST'])
def purge_tasks():
## want to do stuffs with the running celery instance, e.g:
## doing:
## celery.control.purge()
## celery.control.inspect()
##
## BUT HOW??
if __name__ == '__main__':
app.run(debug=True)
私はインターネットで回答を探していますが、回答のうち特に答えはありません。
ご協力いただきありがとうございます。
100%ではありませんが、フラスコアプリがURIの場合は、セロリタスク内から消費してコールすることはできませんか? – postoronnim
コメントありがとうございます。しかし、目標は、Flaskルートを介してアクティブなセロリインスタンスを参照することによって、タスクの操作(リスト表示、検査)を行うことができるようにすることです。 ie:私はこのセロリインスタンスを参照することによってそれを行うべきだと思います: 'Celery = Celery(app.name、broker = app.config [' CELERY_BROKER_URL ']') しかし、 'Celery worker -A ...'インスタンスのFlaskルート(別のプロセス)? ? 私はこれを誤った方向に考えているかもしれませんが、Flaskルートから現在アクティブなセロリのキューを調べるにはどうすればよいですか? –
助けがあれば、答えを受け入れてください。 – postoronnim