Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

226
Views
¿Cómo configurar diferentes horarios de lunes a viernes/fines de semana para celery beat en Django?

¿Cómo hago para programar mis tareas de manera diferente para los días de semana y los fines de semana en celery beat?

El horario se establece de la siguiente manera en mi archivo settings.py

 { "task_weekday": { "task": "tasks.my_regular_task", "schedule": crontab(minute="0-30", hour="4,5", day_of_week="mon-fri"), "options": {"queue": "queue_name"}, }, "task_weekend": { "task": "tasks.my_regular_task", "schedule": crontab(minute="0-5", hour="10,12", day_of_week="sat,sun"), "options": {"queue": "queue_name"}, }, }

Sin embargo, cuando lo configuré, ejecutó el horario del día de la semana hoy (domingo 21/03/2021) en lugar de retomar el horario del fin de semana.

Tengo la zona horaria de la aplicación configurada en 'US/Pacific' y CELERY_ENABLE_UTC está configurado en False .

Después de configurarlo, veo la siguiente entrada de registro, pero ejecuta el programa de tareas de los días de semana.

 [2021-03-21 17:57:50,082: DEBUG/MainProcess] Current schedule: <ScheduleEntry: task_weekday tasks.my_regular_task() <crontab: 0-30 4,5 mon-fri * * (m/h/d/dM/MY)> <ScheduleEntry: task_weekend tasks.my_regular_task() <crontab: 0-5 10,12 sat,sun * * (m/h/d/dM/MY)> <ScheduleEntry: celery.backend_cleanup celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)>

También intenté ejecutar las tareas cada pocos minutos para probar qué programa recoge y recoge el programa de fin de semana:

 { "task_weekday": { "task": "tasks.my_regular_task", "schedule": crontab(minute="*/2", hour="*", day_of_week="mon-fri"), "options": {"queue": "queue_name"}, }, "task_weekend": { "task": "tasks.my_regular_task", "schedule": crontab(minute="*/3", hour="*", day_of_week="sat,sun"), "options": {"queue": "queue_name"}, }, }
 [2021-03-21 18:03:27,075: DEBUG/MainProcess] Current schedule: <ScheduleEntry: task_weekend tasks.my_regular_task() <crontab: */3 * sat,sun * * (m/h/d/dM/MY)> <ScheduleEntry: task_weekday tasks.my_regular_task() <crontab: */2 * mon-fri * * (m/h/d/dM/MY)> <ScheduleEntry: celery.backend_cleanup celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)> [2021-03-21 18:03:27,076: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes [2021-03-21 18:03:27,080: DEBUG/MainProcess] beat: Waking up in 32.91 seconds. [2021-03-21 18:04:00,024: DEBUG/MainProcess] beat: Synchronizing schedule... 2021-03-21 18:04:00,041 | INFO | Self | 736a6a98bd5d456f8a253b5790f5a8e0 | 1 | celery.beat | beat:apply_entry | 271 | Scheduler: Sending due task task_weekday (tasks.my_regular_task) [2021-03-21 18:04:00,041: INFO/MainProcess] Scheduler: Sending due task task_weekday (tasks.my_regular_task) [2021-03-21 18:04:00,060: DEBUG/MainProcess] tasks.my_regular_task sent. id->bdffda9e-ab8a-41dd-a3b1-7ce62a1ab669
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

task_name es un índice único. En la tabla periodictask, un nombre de tarea solo puede estar allí una vez. Entonces, sus dos envíos de trabajo significan que el segundo está sobrescribiendo al primero.

Podría hacer una función de tarea my_regualar_task_weekend() que simplemente llame a my_regular_task() y luego aplique el horario de fin de semana a la nueva tarea.

over 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!