2013-05-21 33 views
7

Tôi đang sử dụng các nhiệm vụ cần tây định kỳ với Django. Tôi đã từng có tác vụ sau trong tệp app/task.py của mình:Hàng đợi xếp hạng cần thiết bao gồm các nhiệm vụ lỗi thời

@periodic_task(run_every=timedelta(minutes=2)) 
def stuff(): 
    ... 

Nhưng bây giờ tác vụ này đã bị xóa khỏi tệp app/tasks.py của tôi. Tuy nhiên, tôi tiếp tục thấy cuộc gọi đến nhiệm vụ này trong nhật ký cần tây của mình:

[2013-05-21 07:08:37,963: ERROR/MainProcess] Received unregistered task of type u'app.tasks.stuff'. 

Có vẻ như lịch trình đánh dấu cần tây mà tôi sử dụng không cập nhật hàng đợi. Đây là cách trình lập lịch biểu được xác định trong tệp project/settings.py của tôi:

CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" 

Khởi động lại nhân viên cần tây không giúp được gì. FYI, tôi sử dụng một nhà môi giới Redis.

Làm cách nào để tôi có thể xóa hoặc cập nhật hàng đợi cần trục để các công việc cũ hơn không được gửi cho công nhân cần tây của tôi?

+0

Tôi nghĩ bạn cũng phải xóa mục nhập cơ sở dữ liệu cho lịch biểu. Bạn có thể làm như vậy từ quản trị django. – Ngenator

+0

Xin chào Regis, bạn đã quản lý để giải quyết vấn đề này chưa. Tôi có cùng một vấn đề. @Ngenator - giải pháp của bạn là –

+0

Sự cố có thể nằm trong máy chủ redis. Kể từ khi các nhiệm vụ cần tây là một đối tượng ngâm đã được đẩy vào máy chủ redis, redis giữ giữ các nhiệm vụ lỗi thời. Khởi động lại máy chủ redis hoặc gọi hàm purge của tác vụ. –

Trả lời

-1

Xóa tệp .pyc cho nơi tác vụ được viết ban đầu. Hoặc, chỉ cần xóa tất cả các tệp .pyc trong thư mục dự án của bạn.

Lệnh này nên làm việc:

find . -name "*.pyc" -exec rm -rf {} \; 

How do I remove all .pyc files from a project?

+0

Điều này không hoạt động! Tôi cũng đã cố gắng xóa 'lịch trình celerybeat '. – Babu

2

Install django-celery.

Như đã trích dẫn, dự án này không cần thiết để sử dụng cần tây nhưng bạn cần điều này để bật giao diện quản trị tại /admin/djcelery/ để quản lý các tác vụ định kỳ. Ban đầu sẽ không có nhiệm vụ được đăng ký hoặc định kỳ.

Khởi động lại đánh bại và kiểm tra lại bảng Các tác vụ định kỳ. Beat sẽ thêm các nhiệm vụ được lên lịch hiện có vào bảng đó với khoảng thời gian hoặc crontab được xác định trong các thiết lập hoặc các trang trí. Ở đó bạn có thể xóa các tác vụ không mong muốn.

CẬP NHẬT: Từ cần tây4, bạn nên sử dụng gói này. https://github.com/celery/django-celery-beat

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