2017-07-10 42 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你还可以提供这些蓝图的代码吗? –