OKみんな、これは私を狂わせています。私はこれに丸一日取り組んでいますが、うまくいきません!
私のセロリプロジェクトの構造は次のとおりです。
# celery.py
from celery.schedules import crontab
from celery import Celery
celery = Celery('scheduler.celery',
include=['scheduler.tasks'])
celery.config_from_object('celeryconfig')
と:
# tasks.py
from scheduler.celery import celery
@celery.task
def test():
do_something()
と:
# celeryconfig.py
from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
'test-cron': {
'task': 'tasks.test',
'schedule': crontab(minute='*/1'),
},
}
# CELERY_IMPORTS = ('tasks', )
BROKER_URL = 'redis://localhost:6379/0'
すべてのファイルはprojects/scheduler/
フォルダーの下にあります。
サービスを開始すると、celeryd
サービスが実行されてブローカーに接続されていることcelerybeat
がわかりますが、サービスを開始すると、ログに次のメッセージが表示されますReceived unregistered task of type 'tasks.test'
。
定数のコメントを外すとCELERY_IMPORTS
(SOの多くの回答で示唆されているように)、celeryd
サービスは開始されません! 実際には出力されますOK
が、ps ef | grep celery
実行していないことがわかります。
私のデーモン conf ファイルは次のようになります。
# Name of nodes to start
CELERYD_NODES="w1"
# Where to chdir at start.
CELERYD_CHDIR="/home/me/projects/scheduler/"
# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=4"
# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
# Workers should run as an unprivileged user.
CELERYD_USER="celery"
CELERYD_GROUP="celery"
# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"
どんな助けでも大歓迎です。