2017-02-10 53 views
2

我有燒瓶芹菜應用實例化芹菜實例。 據我所知,從視.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%肯定的,但如果你的燒瓶app是一個URI,你不能在celery任務中調用它來使用它嗎? – postoronnim

+0

感謝您的評論。然而,我們的目標是通過Flask路徑引用活動的芹菜實例來完成任務的操作(列表,檢查)。 即:我想我應該參照本芹菜實例做: 「芹菜芹菜=(app.name,經紀人=的app.config [」 CELERY_BROKER_URL「])」 但是,我怎麼能是指從該實例一個燒瓶路線(一個不同的過程),而不是一個芹菜工人 - 一個......實例? ? 也許我在錯誤的方向思考這個問題,但是我們如何從Flask路由中檢查當前活動的芹菜隊列? –

+0

如果有幫助,接受答案,如果你不介意。 – postoronnim

回答