Tôi muốn gọi nhiệm vụ cần tây đồng bộ trong các thử nghiệm Django của mình mà không cần chạy công nhân cần tây. Để đạt được điều này, tôi đã chỉ định CELERY_ALWAYS_EAGER=True
trong settings.py của tôi nhưng nó dường như không hoạt động. Vì vậy, tôi đã quyết định áp dụng công cụ trang trí override_settings cho thử nghiệm cụ thể trông như thế nàyKhông thể gọi nhiệm vụ cần tây trong kiểm tra Django đồng bộ
@override_settings(CELERY_ALWAYS_EAGER=True, BROKER_BACKEND='memory',
CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
def test_foo(self):
...
Thật không may, thử nghiệm này vẫn gọi nhiệm vụ trong công nhân cần tây của tôi. Những gì tôi có thể bị mất tích? Để cụ thể, tôi đang sử dụng Django 1.10 với Celery 4.0.0.
Nếu cài đặt cần tây có liên quan đang tồn tại trên một số đối tượng trong bộ nhớ trong ứng dụng cần tây vào thời gian khởi động của người thử nghiệm của bạn, ghi đè chúng có thể không có hiệu lực. Bạn đã thử bắt đầu thử nghiệm với một tập tin cài đặt khác với cài đặt bạn muốn chưa? – schwobaseggl
Điều này dường như đã được biết đến. Có một cuộc thảo luận về chủ đề (https://groups.google.com/forum/#!topic/celery-users/1WmrfFZ9nHs). Chúng thay đổi cài đặt khi chạy trên đối tượng 'celery.Celery(). Conf', không phải là' django.conf' điển hình – schwobaseggl