我已经阅读了官方文档,但我不太清楚我是否理解如何应用他们所说的内容。我也见过this QA,我也使用工厂模式。只是看不到整个画面。
连接池只要其他redis / huey设置可能因给定环境(开发,生产)而异。我们如何连接 huey ,以便我们可以配置它类似于Flask应用程序?
只要我理解从视图中触发任务,我们需要导入任务moudule并调用特定任务(调用传递敏感参数的函数)。在我们实例化的地方,保留 huey 实例?
任务应该知道应用程序依赖性吗?我们应该考虑另外一个精简的 Flask 应用吗?
你可以帮一下吗?
答案 0 :(得分:3)
以下是我将它连接起来的方式。
首先,这是我的项目文件夹的内容:
获取一个精简的Flask应用程序供您的任务使用。正如建议in the post我创建了一个辅助应用程序工厂:
# global dependencies
db = SQLAlchemy()
def create_app_huey(config_name):
app = Flask(__name__)
# apply configuration
app.config.from_object(config[config_name])
# init extensions
db.init_app(app)
return app
创建任务包。这里有两个重要文件是 config.py
和 tasks.py
。 This post helped a lot。让我们从配置开始。注意,这是非常简单的方法。
# config.py (app.tasking.config)
import os
from huey import RedisHuey
settings__development = {
'host': 'localhost'
}
settings__testing = {
'host': 'localhost'
}
settings__production = {
'host': 'production_server'
}
settings = {
'development': settings__development,
'testing': settings__testing,
'production': settings__production,
'default': settings__development
}
huey = RedisHuey(**settings[os.getenv('FLASK_ENV') or 'default'])
然后 tasks.py
模块将如下所示:
import os
from app.tasking.config import huey
from app import create_app_huey
app = create_app_huey(config_name=os.getenv('FLASK_ENV') or 'default')
@huey.task()
def create_thumbnails(document):
pass
运行消费者。激活您的虚拟环境。然后从 cmd (我在Windows上)运行:
huey_consumer.py app.tasking.config.huey
app.tasking.config
是包。包。模块路径(在我的情况下! )和
huey
是可用的名称(在配置模块中) huey 实例。检查 huey 实例名称。