小编pee*_*ith的帖子

将 python Flask 应用程序上下文传递给 rq 作业的正确方法

我创建了一个 Flask 应用程序,它实际上是一个新闻搜索应用程序。它目前提供多种路由,与 Elasticsearch 集成以进行文档搜索和索引,并通过 Flask-SQLAlchemy 与 mySQL DB 集成。

\n

该应用程序应该允许登录的用户搜索文档/文章,此时会触发 elasticsearch 并将结果返回给用户。这一切都有效。

\n

我现在正在构建使用 RQ 和 Ajax 启动后台异步搜索的功能。现在我需要我的 RQ 来排队一个任务,该任务将搜索(调用一些 API)、更新我的数据库并更新我的 ES 索引。所有这些功能都已在我的 Flask 应用程序中构建(搜索 API 调用、配置、DB ORM、ES 接口),因此我希望理想地重用所有这些功能。

\n

我设置了一个 RQ,它调用一个模块,然后尝试创建一个新的应用程序实例,以便我可以重用现有的 DB/ES 设置,但是当调用代码时,我从 RQ 中收到错误:

\n
File "./news_functions.py", line 14, in <module>\n    from app import create_app, db\nModuleNotFoundError: No module named 'app'\n
Run Code Online (Sandbox Code Playgroud)\n

应用结构如下:

\n
project\n\xe2\x94\x82   project.py   \n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80app\n\xe2\x94\x82   \xe2\x94\x82   __init.py__\n\xe2\x94\x82   \xe2\x94\x82   config.py\n\xe2\x94\x82   \xe2\x94\x82   models.py\n\xe2\x94\x82   \xe2\x94\x82   classes.py\n\xe2\x94\x82   \xe2\x94\x82   news_functions.py\n\xe2\x94\x82   \xe2\x94\x82   .env\n\xe2\x94\x82   \xe2\x94\x82\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80main\n\xe2\x94\x82       \xe2\x94\x82   __init__.py\n\xe2\x94\x82       \xe2\x94\x82   forms.py\n\xe2\x94\x82       \xe2\x94\x82   views.py\n\xe2\x94\x82 …
Run Code Online (Sandbox Code Playgroud)

python redis flask rq

3
推荐指数
1
解决办法
1549
查看次数

标签 统计

flask ×1

python ×1

redis ×1

rq ×1