2

我已经阅读了官方文档,但我不太确定我是否了解如何应用他们所说的内容。我也看过这个 QA,我也使用工厂模式。就是看不到全貌。

  1. 只要其他 redis/huey 设置的连接池可能会因给定环境(开发生产)而有所不同。我们如何连接huey以便我们可以像 Flask 应用程序一样配置它?

  2. 只要我理解从视图中触发任务,我们需要导入任务模块并调用特定任务(调用传递敏感参数的函数)。我们应该在哪里实例化,保留huey实例?

  3. 任务应该知道应用程序的依赖关系吗?我们是否应该为此考虑另一个精简的Flask应用程序?

你能帮忙一点吗?

4

1 回答 1

4

这就是我如何将它全部连接起来。

首先,这是我的项目文件夹的内容:

在此处输入图像描述

  1. 获取一个精简的 Flask 应用程序以供您的任务使用。正如帖子中建议的那样,我创建了一个辅助应用程序工厂:

    # 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
    
  2. 创建任务包。这里的两个重要文件是config.pytasks.py这篇文章有很大帮助。让我们从配置开始。请注意,这是非常简单的方法。

    # 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
    
  3. 运行消费者。激活您的虚拟环境。然后从cmd运行(我在 Windows 上):

    huey_consumer.py app.tasking.config.huey

    app.tasking.config在哪里。模块路径(在我的例子中!)并且 是可用的(在配置模块中)huey实例的名称。检查您的Huey实例名称。huey

    阅读这有助于

于 2017-06-13T11:33:37.737 回答