Я запускаю Flask с Huey на Windows без каких-либо проблем, по общему признанию, только для разработки и тестирования. Для производства я использую Flask/Huey на серверах Linux. Как с фокусом Redis, Flask 0.12 и Huey 1.2.0.
Я использую шаблон фабрики для создания специализированной «вырезанной» версии флеш-приложения для конкретного использования задачами 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
и его extensions module, чтобы узнать, как это реализовано. Обратите также внимание на то, как этот проект также создает конкретное приложение (create_celery_app
) для использования с целевой задачей Celery.
Пример tasks.py
. Обратите внимание на использование with app.app_context():
для создания контекста фляги. Теперь мои функции имеют доступ к расширениям, таким как Flask-Mail, Flask-SqlAlchemy (db, models) и т. Д.
@huey.task()
def generate_transaction_documents_and_email(transaction_id):
app = create_huey_app()
with app.app_context():
reports.generate_transaction_documents_and_email(transaction_id)
@huey.task()
def send_email(subject, recipients, text_body, html_body, attachments=[], cc=[]):
app = create_huey_app()
with app.app_context():
emails.send_email(subject, recipients, text_body, html_body, attachments, cc)
@huey.periodic_task(crontab(minute='30'))
def synchronize_mailing_list():
app = create_huey_app()
if app.config['CREATESEND_SYNCHRONIZE']:
_list_name = app.config['CREATESEND_LIST']
with app.app_context():
sync_delete_ar_subscribers(_list_name)
sync_add_ar_subscribers(_list_name)
Вы когда-нибудь находили его? Я искал один за последние 2 недели и не могу найти тот, который все еще развит. –
@KevinVasko; Huey - это тот, который используется наиболее широко. Я экспериментировал с ним, и он прост и работает. Однако я нашел одну большую проблему, и автор тоже не мог мне помочь; Я не могу использовать рабочих Huey, которым нужен контекст Flask. Я не могу понять, как передать задачи в этом контексте. Это останавливает меня в настоящее время с помощью Huey. –
Спасибо за замечание, я проведу Huey, мне не нужно работать с Flask, надеюсь, это не проблема.Я также нашел один, называемый «WorQ», но он не обновлялся через 3 года или около того, и неясно, поддерживает ли он Windows или нет. –