2016-11-21 17 views
5

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.

+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

+0

Đ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

Trả lời

10

Trong cần tây 4,0 thông số cấu hình đã thay đổi,

Hãy thử những thay trong các thử nghiệm của bạn,

@override_settings(
    task_eager_propagates=True, 
    task_always_eager=True, 
    broker_url='memory://', 
    backend='memory' 
) 

tôi đã phải đối mặt với cùng một vấn đề, giải quyết sử dụng tên chữ thường mới cho các bài kiểm tra cũng như trong mặc định cài đặt cần tây.

Dưới đây là các thiết lập mới cho bản đồ gốc cài đặt,
http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings

thiết lập cần tây thay đổi thông tin:
http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#lowercase-setting-names

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