2014-05-19 19 views
8

là có cách để Thêm, sửa đổi, loại bỏ celery.schedules tại thời gian chạy. Tôi cần một cái gì đó mà đọc một bảng db định kỳ để biết danh sách các lịch trình.Thêm, sửa đổi, loại bỏ celery.schedules tại thời điểm chạy

Tài liệu cho biết người ta có thể sử dụng djcelery.schedulers.DatabaseScheduler để đạt được những gì tôi muốn, nhưng không chắc chắn làm thế nào để làm điều đó.

tôi đọc How to dynamically add/remove periodic tasks to Celery (celerybeat), vẫn không rõ ràng

Nhờ sự giúp đỡ

+0

Bất cứ điều gì thay đổi về điều này kể từ năm 2014? – Tanay

+0

Havent đã thử sau đó –

Trả lời

11

Khi bạn thiết lập trong cài đặt ứng dụng của bạn:

CELERYBEAT_SCHEDULER='djcelery.schedulers.DatabaseScheduler' 

celery beat Proces kiểm tra django mô hình PeriodicTask để xem những gì nhiệm vụ cần được thực thi .

Bạn có thể thêm/sửa đổi/xóa những nhiệm vụ bằng cách sửa đổi nó sử dụng mô hình django:

from djcelery.models import PeriodicTask, CrontabSchedule 

every_hours_crontab = CrontabSchedule(minute=0) 
every_hours_crontab.save() 

periodic_task = PeriodicTask(
    name='Call my task every hour', 
    task='myproject.tasks.mytask', 
    crontab=every_hours_crontab, 
    args=json.dump([arg1, arg2]), 
    kwargs=json.dump({'foo': 'bar'}) 
) 
periodic_task.save() 

Bạn cũng có thể kiểm tra cấu hình khác nhau của PeriodicTask sử dụng bảng điều khiển django admin:
http://localhost:8000/admin/djcelery/crontabschedule/add/
http://localhost:8000/admin/djcelery/periodictask/

+1

Nếu tôi không sử dụng django thì sao? – Veehmot

+0

Sau đó, bạn cần phải thực hiện các chức năng như vậy một mình hoặc sử dụng bất kỳ khung công tác nào khác mà bạn có. – daniula

Các vấn đề liên quan