我正在根据一个例子建立芹菜,此时......
$ export PYTHONPATH=/webapps/hello_django/hello:$PYTHONPATH
$ /webapps/hello_django/bin/celery --app=hello.celery:app worker --loglevel=INFO
在我的结尾设置为
samuel@samuel-pc:~/Documents/code/revamp$ export PYTHONPATH=/home/samuel/Documents/code/revamp/gallery:$PYTHONPATH
samuel@samuel-pc:~/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
不确定它对路径做了什么,这就是结果应该是什么
-------------- celery@django 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] celery@django ready.
我的猜测是我需要设置芹菜安装路径的路径,如果有的话可以告诉我路径。
答案 0 :(得分:0)
有很多关于芹菜教程的headeaches。试试这个:
击:
sudo pip3 install virtualenv
virtualenv env
source env/bin/activate
击:
pip install django
django-admin starproject myproject
cd myproject
python manage.py startapp myapp
然后你应该pip install celery
接下来在myapp目录的view.py上创建一个tasks.py:
tasks.py
from celery import Celery
from celery.decorators import task
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@task(bind=True,name="my_task")
def my_task(self):
print('hello')
return 1+1
击:
sudo apt-get install rabbitmq-server
sudo service rabbitmq-server restart
转到您的app目录,即具有tasks.py且运行celery -A tasks worker --loglevel=info
的目录。这仅适用于定义任务的目录。然后你应该让你的工人起来跑步。当您从任务中打印或返回某些内容时,它应显示在此处。
最后你应该使用你的任务。设置视图(设置网址,制作模板等)并从视图中调用您的任务:
views.py
from django.shortcuts import render
from .tasks import my_task
def index(request):
my_task.delay()
return render({},'index.html')
神奇的是延迟调用是assync,不可阻塞。 从这个简约的例子中,我希望你能更好地理解教程所讨论的路径,并做一些他们让你做的复杂的事情:比如在settings.py上放置celery设置,从其他目录调用worker,把东西放在路径上......当我试图从官方文档中学习这个时,真的很痛苦。
祝你好运!