• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

322
Views
¿Cuál es la mejor opción para una cola de tareas (Python 3) en Windows ahora que Celery 4 ha dejado de ser compatible con Windows?

Ejecutamos un sitio Flask bajo IIS en Windows, y para tareas fuera de proceso usamos Celery. Celery nos ha dado algunos problemas bajo Windows, pero por ahora estamos satisfechos ejecutando la versión 3.1.12, usando RabbitMQ/AMQP como back-end, que funciona bajo Windows.

La nueva versión de Celery (4) ha dejado de ser compatible con Windows , por lo que estoy buscando una alternativa viable.

RQ parece una cola de tareas muy agradable, pero tampoco es compatible con Windows ( parte inferior de la página)

He visto algunas colas de tareas más aparentemente menos populares como:

  • kuiruk
  • tigretarea
  • Huey

Pero no está claro si son compatibles con Windows y Flask. Me pregunto si alguien tiene experiencia en ejecutar una cola de tareas de Python en Windows que funcione. Tal vez uno de los que mencioné, o una alternativa.

No es una opción para nosotros ejecutar una máquina Linux, porque no tenemos experiencia en la administración de Linux, y tenemos muchas cosas heredadas en ejecución que requieren Windows.

almost 3 years ago · Santiago Trujillo
1 answers
Answer question

0

Ejecuto Flask con Huey en Windows sin ningún problema, es cierto que solo para desarrollo y prueba. Para la producción uso Flask/Huey en servidores Linux. Ambos con el back-end de Redis, Flask 0.12 y Huey 1.2.0.

Utilizo el patrón de fábrica para crear una versión "reducida" especializada de una aplicación Flask para uso específico en tareas de Huey. Esta versión no carga planos ni configura Flask-Admin, ya que no son necesarios en las tareas de Huey.

Código de ejemplo de __init__.py en la carpeta de la aplicación. App es una clase que se extiende desde 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

La idea de configure_extensions está tomada de Quokka CMS . Examine su app __init__.py y su módulo de extensiones para ver cómo se implementa. Tenga en cuenta también cómo este proyecto también crea una aplicación específica ( create_celery_app ) para usar con la cola de tareas de Celery.

Ejemplo de tasks.py . Tenga en cuenta el uso de with app.app_context(): para crear el contexto Flask. Ahora mis funciones tienen acceso a extensiones como Flask-Mail, Flask-SqlAlchemy (db, models), etc.

 @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)
almost 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error