2017-02-10 4 views
2

私はセロリインスタンスをインスタンス化するFlask Celeryアプリを持っています。 私はビューのの.pyファイルの観点から、私は同じの.pyファイルに通常のフラスコルートを追加することができ、私は二度同じコードを実行する必要があることを理解する:フラスコセロリアプリと通常のフラスコアプリ(それらを同時に同時に動作させる方法)

  1. 労働者を実行します。

    %セロリワーカーの-A app.celery ...

  2. を実行し、通常のフラスコアプリと同じコード:

    %パイソン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) 

私はインターネットで回答を探していますが、回答のうち特に答えはありません。

ご協力いただきありがとうございます。

+0

100%ではありませんが、フラスコアプリがURIの場合は、セロリタスク内から消費してコールすることはできませんか? – postoronnim

+0

コメントありがとうございます。しかし、目標は、Flaskルートを介してアクティブなセロリインスタンスを参照することによって、タスクの操作(リスト表示、検査)を行うことができるようにすることです。 ie:私はこのセロリインスタンスを参照することによってそれを行うべきだと思います: 'Celery = Celery(app.name、broker = app.config [' CELERY_BROKER_URL ']') しかし、 'Celery worker -A ...'インスタンスのFlaskルート(別のプロセス)? ? 私はこれを誤った方向に考えているかもしれませんが、Flaskルートから現在アクティブなセロリのキューを調べるにはどうすればよいですか? –

+0

助けがあれば、答えを受け入れてください。 – postoronnim

答えて

1

これはhttp://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#applicationです。あなたの質問にお答えするようです。アプリケーションを読み、タスクを呼び出す。あなたがしなければならないことは、ドキュメントに記載されているようにFlaskアプリを「タスク」として保存し、そのタスクを「アプリ」とも呼ばれるCeleryインスタンスに渡すことです。

関連する問題