2012-10-15 29 views

Trả lời

66

Bạn đã thử chạy tác vụ từ trình bao Django chưa? Bạn có thể sử dụng phương thức .apply của một tác vụ để đảm bảo rằng nó hoạt động háo hức và cục bộ.

Giả sử các nhiệm vụ được gọi là my_task trong Django app myapp trong một submodule tasks:

$ python manage.py shell 
>>> from myapp.tasks import my_task 
>>> eager_result = my_task.apply() 

Thể hiện kết quả có API giống như thường lệ AsyncResult loại, ngoại trừ kết quả luôn được đánh giá háo hức và địa phương và phương pháp .apply() sẽ chặn cho đến khi tác vụ được chạy đến khi hoàn thành.

+0

Làm cách nào tôi có thể làm tương tự cho dự án kim tự tháp? Cấu trúc thư mục sẽ như thế nào: /myproject => celeryconfig.py, setup.py, development.py, /views/celerytasks => mycelerytask.py Now ở đây tôi muốn chạy 'mycelerytask. py '(đó là nhiệm vụ định kỳ) bằng tay từ dòng lệnh. Bạn có thể giúp? – Workonphp

+0

@Workonphp Tôi không quen với Kim tự tháp, thật không may, vì vậy tôi không biết Celery tích hợp với Kim tự tháp như thế nào. (Lưu ý rằng giải pháp của tôi ở trên là Django cụ thể, đòi hỏi kịch bản 'manage.py' Django tạo ra trong tất cả các thư mục dự án Django.) Xin lỗi. –

5

Tôi nghĩ bạn sẽ cần mở hai shell: một để thực hiện các tác vụ từ vỏ Python/Django và một cho chạy celery worker (python manage.py celery worker). Và như câu trả lời trước đó đã nói, bạn có thể chạy các tác vụ bằng cách sử dụng apply() hoặc apply_async()

Tôi đã chỉnh sửa câu trả lời để bạn không sử dụng lệnh không dùng nữa.

+1

manage.py celeryd hiện không còn được dùng nữa: http://stackoverflow.com/a/23921568/1459594 – rschwieb

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