我在哪里可以找到烧瓶中的芹菜原木?

时间:2015-10-13 03:20:47

标签: python flask celery

我正在开发一个运行python脚本的简单Web应用程序,这可能需要大约5-10分钟。我没有让用户在网站上等待,而是使用Celery在后台运行作业,并在脚本完成时向用户发送电子邮件通知。

我的问题很简单:Celery的日志工作在哪里?目前,如果作业因为遇到致命错误而失败,我无从得知。

Celery Logging Docs显示了如何设置日志,但在作业完成后,我可以在哪里访问日志(我想保存为文件)并不完全清楚。

app.py

#----------------------------------------------------------------------------#
# Imports
#----------------------------------------------------------------------------#

from flask import Flask, render_template, request, flash, send_file, redirect, url_for    
from werkzeug import secure_filename
import logging
from logging import Formatter, FileHandler
from forms import *

import my_module
from tasks import make_celery
from celery.utils.log import get_task_logger


#----------------------------------------------------------------------------#
# App Config.
#----------------------------------------------------------------------------#

app = Flask(__name__)
app.config.from_object('config')

celery = make_celery(app)
logger = get_task_logger(__name__)

format = "%(asctime)s - [%(levelname)s] %(message)s"
logging.basicConfig(filename='app-errors.log', 
                    filemode='a',
                    format=format,
                    level=logging.DEBUG)
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
logging.getLogger(__name__).addHandler(console)

#----------------------------------------------------------------------------#
# Controllers.
#----------------------------------------------------------------------------#

@celery.task
def background_task(formdict):
    logger.debug('starting work...')
    result = my_module.main(formdict)
    return result

@app.route('/', methods=('GET', 'POST'))
def index():
    form = MyForm()
    if form.validate_on_submit():
        task = background_task.delay(form.data)

        return redirect(url_for('jobcomplete'))
    else:
        print form.errors
        filename = None
    return render_template('pages/home.html', form=form)

0 个答案:

没有答案