Tôi có một nhiệm vụ trong Celery có khả năng chạy trong 10.000 giây trong khi hoạt động bình thường. Tuy nhiên, tất cả các nhiệm vụ còn lại của tôi sẽ được thực hiện trong chưa đầy một giây. Làm thế nào tôi có thể đặt giới hạn thời gian cho tác vụ cố ý chạy dài mà không thay đổi giới hạn thời gian đối với các tác vụ chạy ngắn?Đặt giới hạn thời gian cho một nhiệm vụ cụ thể với cần tây
30
A
Trả lời
44
Bạn có thể đặt giới hạn thời gian tác vụ (hard và/hoặc soft) trong khi xác định tác vụ hoặc trong khi gọi.
from celery.exceptions import SoftTimeLimitExceeded
@celery.task(time_limit=20)
def mytask():
try:
return do_work()
except SoftTimeLimitExceeded:
cleanup_in_a_hurry()
hoặc
mytask.apply_async(args=[], kwargs={}, time_limit=30, soft_time_limit=10)
5
Đây là một ví dụ với trang trí cho một công tác cụ thể và cần tây 3.1.23 sử dụng soft_time_limit = 10000
@task(bind=True, default_retry_delay=30, max_retries=3, soft_time_limit=10000)
def process_task(self, task_instance):
"""Task processing."""
pass
+0
Bạn cũng có thể gán 'time_limit' với nhau như' @task (soft_time_limit = 10, time_limit = 15) ' –
Các vấn đề liên quan
- 1. Cần tây: mỗi giới hạn nhiệm vụ đồng thời (# công nhân cho mỗi nhiệm vụ)?
- 2. Thời gian chờ nhiệm vụ của Celery/giới hạn thời gian cho các cửa sổ?
- 3. làm sạch nhiệm vụ cần tây với DB phụ trợ
- 4. Đặt lại đếm ngược trên nhiệm vụ cần tây
- 5. Bạn đặt task_id của nhiệm vụ cần tây ở đâu?
- 6. Nhiệm vụ nền cần tây Heroku
- 7. Ưu tiên nhiệm vụ trong cần tây với redis
- 8. phân lớp cần tây Nhiệm vụ
- 9. cần tây nhận nhiệm vụ đếm
- 10. Trong cần tây làm thế nào để có được trạng thái nhiệm vụ cho tất cả các nhiệm vụ cho tên nhiệm vụ cụ thể?
- 11. nhiệm vụ Thử lại cần tây với mũ lại tắt
- 12. Chạy nhiệm vụ cần tây khi không thể nhập nhiệm vụ
- 13. làm thế nào để loại bỏ nhiệm vụ từ cần tây với redis môi giới?
- 14. django cần tây chấm dứt subprocesses nhiệm vụ của
- 15. Cách đặt giới hạn thời gian cho mã Ruby chạy
- 16. Nhiệm vụ cần tây eta tắt, sử dụng rabbitmq
- 17. Làm thế nào để thực hiện nhiệm vụ cần tây từ bên trong nhiệm vụ?
- 18. Phát hiện khi nào một nhiệm vụ cần tây và tất cả các nhiệm vụ phụ đã hoàn thành
- 19. Khi nào một nhân viên cần tây công nhận RabbitMQ rằng họ có nhiệm vụ?
- 20. Hành trình cần tây để xếp hàng cụ thể
- 21. Cần tây tích hợp cần tây
- 22. Làm thế nào để thanh lọc tất cả các nhiệm vụ của một hàng đợi cụ thể với cần tây trong python?
- 23. Không thể đặt giới hạn với coord_trans
- 24. Django - Thi một nhiệm vụ thông qua cần tây từ một mô hình
- 25. Nhiệm vụ lặp lại trong các khoảng thời gian cụ thể?
- 26. Nhiệm vụ cần làm hồ sơ
- 27. Làm cách nào để làm cho nhiều công nhân cần tây chạy cùng nhiệm vụ?
- 28. Làm thế nào để gửi nhiệm vụ tuần hoàn vào hàng đợi cụ thể trong cần tây
- 29. Làm thế nào để tự động thêm/xóa nhiệm vụ tuần hoàn để cần tây (celerybeat)
- 30. Drools: Quy tắc giới hạn thời gian
lưu ý rằng các đối số timeout/soft_timeout để apply_async chỉ có sẵn trong phiên bản phát triển của cần tây (nhánh chính, phiên bản tương lai 3.1) – asksol
Bạn cũng có thể đặt giới hạn thời gian cho một nhiệm vụ trong cấu hình bằng cách sử dụng: 'CELERY_ANNOTATIONS = {'module.mytask': {'time_limit': 20.0}}' – asksol
Đối với phiên bản cần tây 3.1.x, có vẻ như các đối số 'timeout/soft_timeout' thành' apply_async' cũng đã được đã thay đổi thành 'time_limit/soft_time_limit'. Thay đổi có liên quan đã được giới thiệu tại đây - https://github.com/celery/celery/commit/be6cef2e441e5ecf5857aeb77bd885f06128b9c9 – sanchitarora