UDATE3: đã tìm thấy sự cố. Xem câu trả lời dưới đây.Hướng dẫn Django Celery không trả về kết quả
UPDATE2: Dường như tôi có thể đang xử lý vấn đề đặt tên và nhập tương đối tự động bằng cách chạy hướng dẫn djcelery thông qua vỏ manage.py, xem bên dưới. Nó vẫn không làm việc cho tôi, nhưng bây giờ tôi nhận được thông báo lỗi đăng nhập mới. Xem bên dưới.
CẬP NHẬT: Tôi đã thêm nhật ký ở cuối bài đăng. Có vẻ nhiệm vụ ví dụ không được đăng ký?
Original Post:
tôi đang cố gắng để có được django-cần tây lên và chạy. Tôi không thể vượt qua được ví dụ.
Tôi đã cài đặt thành công RabbitMQ và đã trải qua các hướng dẫn mà không gặp rắc rối: http://www.rabbitmq.com/getstarted.html
sau đó tôi đã cố gắng để đi qua các hướng dẫn djcelery.
Khi tôi chạy python manage.py celeryd -l info
Tôi nhận được thông báo: [Nhiệm vụ] - app.module.add [2011-07-27 21:17:19, 990: CẢNH BÁO/MainProcess] cần tây @ Sequoia đã bắt đầu.
Điều đó có vẻ tốt. Tôi đặt này ở đầu xác lập cá nhân nộp:
import djcelery
djcelery.setup_loader()
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"
thêm này để cài đặt ứng dụng của tôi:
'djcelery',
đây là tập tin tasks.py của tôi trong thư mục nhiệm vụ ứng dụng của tôi:
from celery.task import task
@task()
def add(x, y):
return x + y
tôi thêm này để tập django.wsgi tôi:
os.environ["CELERY_LOADER"] = "django"
Sau đó, tôi bước này tại cửa sổ dòng lệnh:
>>> from app.module.tasks import add
>>> result = add.delay(4,4)
>>> result
(AsyncResult: 7auathu945gry48- a bunch of stuff)
>>> result.ready()
False
Vì vậy, nó có vẻ như nó đã làm việc, nhưng đây là vấn đề:
>>> result.result
>>> (nothing is returned)
>>> result.get()
Khi tôi đặt trong result.get() nó chỉ bị treo. Tôi đang làm gì sai?
UPDATE: Đây là những gì chạy logger ở mặt trước nói khi tôi khởi động máy chủ nhân:
No handlers could be found for logger “multiprocessing”
[Configuration]
- broker: amqplib://[email protected]:5672/
- loader: djcelery.loaders.DjangoLoader
- logfile: [stderr]@INFO
- concurrency: 4
- events: OFF
- beat: OFF
[Queues]
- celery: exchange: celery (direct) binding: celery
[Tasks]
- app.module.add
[2011-07-27 21:17:19, 990: WARNING/MainProcess] [email protected] has started.
C:\Python27\lib\site-packages\django-celery-2.2.4-py2.7.egg\djcelery\loaders.py:80: UserWarning: Using settings.DEBUG leads to a memory leak, neveruse this setting in production environments!
warnings.warn(“Using settings.DEBUG leads to a memory leak, never”
sau đó khi tôi đặt trong lệnh:
>>> result = add(4,4)
này xuất hiện trong nhật ký lỗi:
[2011-07-28 11:00:39, 352: ERROR/MainProcess] Unknown task ignored: Task of kind ‘task.add’ is not registered, please make sure it’s imported. Body->”{‘retries’: 0, ‘task’: ‘tasks.add’, ‘args’: (4,4), ‘expires’: None, ‘ta’: None
‘kwargs’: {}, ‘id’: ‘225ec0ad-195e-438b-8905-ce28e7b6ad9’}”
Traceback (most recent call last):
File “C:\Python27\..\celery\worker\consumer.py”,line 368, in receive_message
Eventer=self.event_dispatcher)
File “C:\Python27\..\celery\worker\job.py”,line 306, in from_message
**kw)
File “C:\Python27\..\celery\worker\job.py”,line 275, in __init__
self.task = tasks[self.task_name]
File “C:\Python27\...\celery\registry.py”, line 59, in __getitem__
Raise self.NotRegistered(key)
NotRegistered: ‘tasks.add’
Làm cách nào để nhận nhiệm vụ được đăng ký và xử lý đúng cách là gì? cảm ơn.
UPDATE 2:
Liên kết này cho rằng lỗi không đăng ký có thể là do tên không khớp nhiệm vụ giữa khách hàng và người lao động - http://celeryproject.org/docs/userguide/tasks.html#automatic-naming-and-relative-imports
thoát vỏ manage.py và bước vào một vỏ python và đã nhập như sau:
>>> from app.module.tasks import add
>>> result = add.delay(4,4)
>>> result.ready()
False
>>> result.result
>>> (nothing returned)
>>> result.get()
(it just hangs there)
vì vậy tôi nhận được cùng một hành vi, nhưng thông điệp tường trình mới. Từ nhật ký, nó xuất hiện máy chủ đang làm việc nhưng nó sẽ không ăn kết quả lại ra:
[2011-07-28 11:39:21, 706: INFO/MainProcess] Got task from broker: app.module.tasks.add[7e794740-63c4-42fb-acd5-b9c6fcd545c3]
[2011-07-28 11:39:21, 706: INFO/MainProcess] Task app.module.tasks.add[7e794740-63c4-42fb-acd5-b9c6fcd545c3] succeed in 0.04600000038147s: 8
Vì vậy, các máy chủ có nhiệm vụ và nó tính câu trả lời chính xác, nhưng nó sẽ không gửi nó trở lại? tại sao không?
Bạn đang sử dụng Windows? Đã có báo cáo về kết quả không hoạt động trong Windows cho Celery 3 – asksol
Có Tôi đang sử dụng các cửa sổ. Tôi sắp xem lại dự án sử dụng thỏ và cần tây. Tôi sẽ giữ cho ý kiến của bạn trong tâm trí sau đó. Nói chung tôi đã rất hạnh phúc với cả hai mặc dù. – sequoia