无法从flask应用程序导入芹菜对象

2024-04-24 15:27:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试学习和整合芹菜与我的烧瓶应用程序。我尝试了链接中提到的事情: Flask Celery

但是我想把所有异步任务转移到单独的模块中。下面是我的git存储库,我在其中进行更改: Beacons Repo

因此,我在beacons/__init__.py中初始化我的芹菜对象:

from beacons.async import make_celery


mq_url = 'amqp://mq:mq@localhost/localhost'


app = Flask(__name__)

app.config.update(
    CELERY_BROKER_URL=mq_url,
    CELERY_BACKEND=mq_url
)

log_handler = logging.StreamHandler()
log_handler.setLevel(logging.DEBUG)

log_handler.setFormatter(Formatter(
    '\n-------------------------------------\n'
    'TIME: %(asctime)s \n'
    'LEVEL: %(levelname)s \n'
    'MESSAGE: %(message)s \n'
    'FILE: %(pathname)s \n'
    'LINE: %(lineno)d'
    '\n-------------------------------------\n'))

app.logger.addHandler(log_handler)

app.register_blueprint(portal, url_prefix='/beacons')
app.register_blueprint(apis, url_prefix='/beacons/apis')
celery = make_celery(app)


__all__ = ['celery']

我的make_celery位于beacons/async/__init__.py中,如下所示:

^{pr2}$

我创建了另一个模块beacons/tasks.py,它是:

from beacons import celery


@celery.task()
def add(x, y):
    return x + y

我在我的一个视图beacons/portal/view/rest_apis.py中使用这个模块,如下所示:

from beacons.tasks import add

@apis.route('/add', methods=['POST'])
def add_page():
    x = request.form.get('x')
    y = request.form.get('y')

    task = add.delay(x, y)
    return json_response(
        {"id": task.id}, status_code=200)

当我尝试运行Celery worker and Flask应用程序时,我收到以下错误:

    from beacons import celery
ImportError: cannot import name celery

如何将在beacons模块中编写的芹菜对象导入其子模块或任务本身。完整代码请参考Git Repo。在


Tags: 模块frompyimportlogaddappurl
1条回答
网友
1楼 · 发布于 2024-04-24 15:27:00

我尝试运行你的代码,但没有得到这个错误。我在你的运行.py把这个代码留在下面。在

if __name__ == '__main__':
    app.secret_key = str(uuid.uuid4())
    port = '9000'
    app.run(debug=False, port=port, host='0.0.0.0')

然后我执行python运行.py enter image description here

然后我要了127.0.0.1:9000的烧瓶,得到了这个enter image description here

Flask工作正常,除了日志格式错误之外,这个错误不在主题范围之内。在

你能把你执行的命令和你执行的目录发上去吗?我想你的工作目录可能会导致这件事。在

注:您在GitHub中给出的分支代码与此问题中的代码发布不同。在

相关问题 更多 >