2012-12-13 34 views
1

我使用Django/Celery Quickstart... or, how I learned to stop using cron and love celery,似乎工作正在排隊,但從來沒有運行。Django /芹菜快速啓動示例不工作(工作人員不執行任何任務)

tasks.py:

from celery.task.schedules import crontab 
from celery.decorators import periodic_task 

# this will run every minute, see http://celeryproject.org/docs/reference/celery.task.schedules.html#celery.task.schedules.crontab 
@periodic_task(run_every=crontab(hour="*", minute="*", day_of_week="*")) 
def test(): 
    print "firing test task" 

所以我跑芹菜:

bash-3.2$ sudo manage.py celeryd -v 2 -B -s celery -E -l INFO 

/scratch/software/python/lib/celery/apps/worker.py:166: RuntimeWarning: Running celeryd with superuser privileges is discouraged! 
    'Running celeryd with superuser privileges is discouraged!')) 

-------------- [email protected] v3.0.12 (Chiastic Slide) 
---- **** ----- 
--- * *** * -- [Configuration] 
-- * - **** --- . broker:  django://localhost// 
- ** ---------- . app:   default:0x12120290 (djcelery.loaders.DjangoLoader) 
- ** ---------- . concurrency: 2 (processes) 
- ** ---------- . events:  ON 
- ** ---------- 
- *** --- * --- [Queues] 
-- ******* ---- . celery:  exchange:celery(direct) binding:celery 
--- ***** ----- 

[Tasks] 
    . GotPatch.tasks.test 

[2012-12-12 11:58:37,118: INFO/Beat] Celerybeat: Starting... 
[2012-12-12 11:58:37,163: INFO/Beat] Scheduler: Sending due task GotPatch.tasks.test (GotPatch.tasks.test) 
[2012-12-12 11:58:37,249: WARNING/MainProcess] /scratch/software/python/lib/djcelery/loaders.py:132: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments! 
    warnings.warn("Using settings.DEBUG leads to a memory leak, never " 
[2012-12-12 11:58:37,348: WARNING/MainProcess] [email protected] ready. 
[2012-12-12 11:58:37,352: INFO/MainProcess] consumer: Connected to django://localhost//. 
[2012-12-12 11:58:37,700: INFO/MainProcess] child process calling self.run() 
[2012-12-12 11:58:37,857: INFO/MainProcess] child process calling self.run() 
[2012-12-12 11:59:00,229: INFO/Beat] Scheduler: Sending due task GotPatch.tasks.test (GotPatch.tasks.test) 
[2012-12-12 12:00:00,017: INFO/Beat] Scheduler: Sending due task GotPatch.tasks.test (GotPatch.tasks.test) 
[2012-12-12 12:01:00,020: INFO/Beat] Scheduler: Sending due task GotPatch.tasks.test (GotPatch.tasks.test) 
[2012-12-12 12:02:00,024: INFO/Beat] Scheduler: Sending due task GotPatch.tasks.test (GotPatch.tasks.test) 

的任務確實是越來越排隊:

python manage.py shell 
>>> from kombu.transport.django.models import Message 
>>> Message.objects.count() 
234 

和計數隨時間增加:

>>> Message.objects.count() 
477 

日誌文件中沒有任何行似乎表示任務正在執行。我期待類似於:

[... INFO/MainProcess] Task myapp.tasks.test[39d57f82-fdd2-406a-ad5f-50b0e30a6492] succeeded in 0.00423407554626s: None 

任何建議如何診斷/調試呢?

+0

你有沒有解決這個問題? – Amyth

+0

我有同樣的問題,有什麼想法? @Amyth有什麼好運氣? –

回答

0

我也是新來的芹菜,但從您提供的鏈接上的評論,它看起來像在教程中的錯誤。一位評論指出:

在此命令

須藤./manage.py celeryd -v 2 -B -s芹菜-E -l INFO

您必須添加「-I任務「來加載tasks.py文件...

你試過嗎?

0

您應該檢查您是否在django的settyngs.py中指定了BROKER_URL參數。

BROKER_URL = 'django://'

而且你應該檢查你在Django,MySQL和芹菜時區相等。 它幫助了我。

P.S:

[... INFO/MainProcess] Task myapp.tasks.test[39d57f82-fdd2-406a-ad5f-50b0e30a6492] succeeded in 0.00423407554626s: None

此行意味着你的任務安排(!不執行!)

請檢查你的配置,我希望它可以幫助你。

0

我希望有人能從我的黑客經驗中學習。

根據教程設置了一切後,我注意到,當我打電話

add.delay(4,5) 

沒有任何反應。工作人員沒有收到任務(stderr上沒有打印任何內容)。

問題出在rabbitmq安裝。事實證明,默認的可用磁盤空間要求是1GB,這對於我的虛擬機來說太過分了。

讓我走上正軌的是讀取rabbitmq日誌文件。 找到它,我不得不停止和啓動的RabbitMQ服務器

sudo rabbitmqctl stop 
sudo rabbitmq-server 

RabbitMQ的轉儲日誌文件的位置在屏幕上。在該文件中,我注意到這一點:

=WARNING REPORT==== 14-Mar-2017::13:57:41 === 
disk resource limit alarm set on node [email protected] 

********************************************************** 
*** Publishers will be blocked until this alarm clears *** 
********************************************************** 

我那麼這裏遵循的指令,以減少磁盤限額 Rabbitmq ignores configuration on Ubuntu 12

當我從git的使用配置文件的基線 https://github.com/rabbitmq/rabbitmq-server/blob/stable/docs/rabbitmq.config.example

改變本身:

{disk_free_limit, "50MB"}