Каков наилучший вариант для очереди задач (Python 3) в Windows теперь, когда Celery 4 отказался от поддержки Windows?

Мы запускаем сайт Flask под IIS в Windows, а для задач вне процесса мы используем Celery. Celery дал нам некоторые проблемы под Windows, но на данный момент мы удовлетворены работой версии 3.1.12, используя RabbitMQ/AMQP в качестве back-end, который работает под Windows.

В новой версии Celery (4) появилась отброшенная поддержка Windows, поэтому я ищу жизнеспособную альтернативу.

RQ кажется очень приятной очередью задач, но также не поддерживает Windows (внизу страницы)

Я видел еще несколько, казалось бы, менее популярных очередей задач вроде:

Но неясно, поддерживают ли они Windows и Flask. Мне интересно, есть ли у кого-нибудь опыт запуска очереди задач Python под Windows, которая работает. Может быть, один из тех, что я упомянул, или альтернатива.

Это не вариант для запуска Linux-машины, потому что у нас нет опыта администрирования Linux, и у нас много запущенных приложений, требующих Windows.

Ответ 1

Я запускаю Flask с Huey на Windows без каких-либо проблем, по общему признанию, только для разработки и тестирования. Для производства я использую Flask/Huey на серверах Linux. Как с фокусом Redis, Flask 0.12 и Huey 1.2.0.

Я использую шаблон factory для создания специализированной "вырезанной" версии приложения Flask для конкретного использования задачами Huey. Эта версия не загружает чертежи или не настраивает Flask-Admin, поскольку они не требуются в задачах Huey.

Пример кода __init__.py в папке приложения. App - класс, простирающийся от Flask:

def create_app(settings_override=None):

    app = App('app')

    if settings_override:
        app.config.from_object(settings_override)
    else:
        app.config.from_object(os.environ['APP_SETTINGS'])

    from .ext import configure_extensions
    configure_extensions(app, admin, load_modules=True)

    # REST
    import rest.api_v1
    app.register_blueprint(api_v1_bp, url_prefix='/api/v1')

    #  ... and more suff


def create_huey_app():
    app = App('huey app')

    app.config.from_object(os.environ['APP_SETTINGS'])

    from .ext import configure_extensions
    configure_extensions(app, admin=None, load_modules=False)

    return app

Идея configure_extensions взята из Quokka CMS. Изучите его App __init__.py и его