2017-08-27 112 views
1

我根據一個例子,在這一點上設立芹菜......設立的Django和芹菜:位置芹菜路徑

$ export PYTHONPATH=/webapps/hello_django/hello:$PYTHONPATH 
$ /webapps/hello_django/bin/celery --app=hello.celery:app worker --loglevel=INFO 

在我結束設置爲

[email protected]:~/Documents/code/revamp$ export PYTHONPATH=/home/samuel/Documents/code/revamp/gallery:$PYTHONPATH 
[email protected]:~/Documents/code/revamp$ /home/samuel/Documents/code/revamp/revamp/celery --app=revamp.celery:app worker --loglevel=INFO 
bash: /home/samuel/Documents/code/revamp/revamp/celery: No such file or directory 

不知道這是什麼做的路徑,這是什麼樣的結果應該是

-------------- [email protected] v3.1.11 (Cipater) 
---- **** ----- 
--- * *** * -- Linux-3.2.0-4-amd64-x86_64-with-debian-7.5 
-- * - **** --- 
- ** ---------- [config] 
- ** ---------- .> app:   hello_django:0x15ae410 
- ** ---------- .> transport: redis://localhost:6379/0 
- ** ---------- .> results:  disabled 
- *** --- * --- .> concurrency: 2 (prefork) 
-- ******* ---- 
--- ***** ----- [queues] 
-------------- .> celery   exchange=celery(direct) key=celery 

[tasks] 
    . testapp.tasks.test 

[2014-05-20 13:53:59,740: INFO/MainProcess] Connected to redis://localhost:6379/0 
[2014-05-20 13:53:59,748: INFO/MainProcess] mingle: searching for neighbors 
[2014-05-20 13:54:00,756: INFO/MainProcess] mingle: all alone 
[2014-05-20 13:54:00,769: WARNING/MainProcess] [email protected] ready. 

我的猜測是,我需要的路徑設置爲路徑芹菜安裝,如果有的話,任何人都可以告訴我路徑。

+0

你裝了芹菜嗎?你爲什麼認爲應該在'/ home/samuel/Documents/code/revamp/revamp/celery'? –

回答

0

有很多headeaches與芹菜教程在那裏。試試這個:

  • 首先你需要一個virtual enviroment爲你的項目,所以你不需要設置路徑。

慶典:

sudo pip3 install virtualenv 
virtualenv env 
source env/bin/activate 
  • 然後,你需要一個Django項目和應用程序。

慶典:

pip install django 
    django-admin starproject myproject 
    cd myproject 
    python manage.py startapp myapp 
  • 那麼你應該pip install celery

  • 下使tasks.py您view.py同一級別上的myapp目錄:

tasks.py

from celery import Celery 
from celery.decorators import task 

app = Celery('tasks', broker='pyamqp://[email protected]//') 

@task(bind=True,name="my_task")  
def my_task(self): 
    print('hello') 
    return 1+1 
  • 安裝你的經紀人(RabbitMQ的)

慶典:

sudo apt-get install rabbitmq-server 
sudo service rabbitmq-server restart 
  • 轉到您的應用程序目錄,即具有tasks.py一個和運行celery -A tasks worker --loglevel=info。這隻適用於定義任務的目錄。那麼你應該讓你的工人起來跑步。當你從你的任務中打印或返回一些東西時,它應該出現在這裏。

  • 最後你應該使用你的任務。設置一個視圖(設置URL,使模板等),並從視圖中調用你的任務:

views.py

from django.shortcuts import render 
from .tasks import my_task 

def index(request): 
    my_task.delay() 
    return render({},'index.html') 

神奇的是,延遲呼叫assync,非-blockable。 從這個簡約的例子,我希望你能更好地理解你的教程談論的道路,並做他們讓你做的複雜的東西:比如將芹菜設置放在settings.py中,從其他目錄調用worker,將東西放在路徑上。當我試圖從官方文檔中瞭解到這一點時,這是一個真正的痛苦。

祝你好運!

+0

你知道我會嘗試rabbitmq而不是redis ...看看我能否繼續。 –

+0

您描述的錯誤是由virtualenv固定的,而不是rabbitmq – Tico