相关疑难解决方法(0)

Python Flask与芹菜在应用程序上下文之外

我正在使用python Flask构建一个网站.一切都很顺利,现在我正在努力实施芹菜.

在我尝试使用来自芹菜的烧瓶邮件发送电子邮件之前,情况也很顺利.现在我得到一个"在应用程序上下文之外工作"的错误.

完全追溯是

  Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/celery/task/trace.py", line 228, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/celery/task/trace.py", line 415, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/ryan/www/CG-Website/src/util/mail.py", line 28, in send_forgot_email
    msg = Message("Recover your Crusade Gaming Account")
  File "/usr/lib/python2.7/site-packages/flask_mail.py", line 178, in __init__
    sender = current_app.config.get("DEFAULT_MAIL_SENDER")
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 336, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 295, in _get_current_object
    return self.__local()
  File "/usr/lib/python2.7/site-packages/flask/globals.py", line 26, in _find_app
    raise RuntimeError('working outside of application …
Run Code Online (Sandbox Code Playgroud)

python celery flask

14
推荐指数
2
解决办法
9437
查看次数

在 Flask 蓝图中导入 Celery

我有一个具有 MVC 结构的 Flask 应用程序:

my_app
??? server.py
??? requirements.txt
??? models
?   ??? __init__.py
    ??? model.py
??? controllers
    ??? __init__.py
    ??? client_controllers
        ???controller.py
    ??? another_controller.py
??? templates
Run Code Online (Sandbox Code Playgroud)

我使用蓝图在“控制器”中拆分服务器代码,所以我有这样的事情:

服务器.py:

from flask import Flask
from celery import Celery

from controllers.client_controllers.controller import controller

app = Flask(__name__)
app.secret_key = 'SECRET'

app.register_blueprint(controller)

# Celery Configuration
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 = …
Run Code Online (Sandbox Code Playgroud)

python celery flask

4
推荐指数
2
解决办法
1745
查看次数

标签 统计

celery ×2

flask ×2

python ×2