2017-07-10 41 views
0

我有我的燒瓶應用程序的藍圖。是否可以從藍圖調用芹菜任務?

我已經initalized將芹菜放入main.py文件:

def make_celery(app): 
    celery = Celery(app.import_name, backend=app.config['CELERY_RESULT_BACKEND'], 
        broker=app.config['CELERY_BROKER_URL']) 
    celery.conf.update(app.config) 
    TaskBase = celery.Task 
    class ContextTask(TaskBase): 
     abstract = True 
     def __call__(self, *args, **kwargs): 
      with app.app_context(): 
       return TaskBase.__call__(self, *args, **kwargs) 
    celery.Task = ContextTask 
    return celery 

app.config.update(
DEBUG = True, 
MAIL_SERVER='smtp.gmail.com', 
MAIL_PORT=465, 
MAIL_USE_TLS = False, 
MAIL_USE_SSL= True, 
MAIL_USERNAME = email, 
MAIL_PASSWORD = password, 
CELERY_BROKER_URL='redis://localhost:6379/0', 
CELERY_RESULT_BACKEND='redis://localhost:6379/0' 
) 
mail = Mail(app) 

celery = make_celery(app) 

我也有,我已經在我的main.py文件的應用註冊的藍圖。

編輯:

我的任務:

@celery_tasks(name="call_api1") 
def call_api1: 
    api = requests.post("blah blah") 
    return api 

@celery.task(name="call_api2") 
def call_api2(): 
    api2 = requests.post("api2 call") 
    return api2 

截至目前,我在main.py文件中調用這些任務。

不過,我想將它們用在我的藍圖(我已註冊我的main.py)

我已經定義在main.py芹菜任務,並想知道如果我可以調用芹菜任務從我的藍圖。

問候, Galeej

回答

0

這是你的目標通過調用一個URL來執行芹菜(郵件?)的任務呢?我不知道你的藍圖究竟是什麼樣子,我想你可以。 但沒有任何額外的代碼,我不能說如何。

+0

是的。這種東西。我想異步地對第三方API進行一次郵政調用,並將它們流式傳輸到我的前端。所以這個任務本身非常簡單(我已經編寫了可以完成必要的工作/調用的類)。藍圖讓我的生活更輕鬆:) – galeej

+0

@galeej你還可以提供這些藍圖的代碼嗎? –