1

こんにちは、私はセロリが初めてです。私は定期的なタスクのスケジューリングに取り組んでいます。私は次のように設定しましたceleryconfig.py

from datetime import timedelta

BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = "redis"
CELERY_REDIS_HOST = "localhost"
CELERY_REDIS_PORT = 6379
CELERY_REDIS_DB = 0
CELERY_IMPORTS=("mytasks")
CELERYBEAT_SCHEDULE={'runs-every-60-seconds' :
                        {
                                'task': 'mytasks.add',
                                'schedule': timedelta(seconds=60),
                                'args':(16,16)
                        },
                    }

そしてmytask.py次のように:

from celery import Celery

celery = Celery("tasks",
                broker='redis://localhost:6379/0',
                backend='redis')


@celery.task
def add(x,y):
        return x+y

@celery.task
def mul(x,y):
        return x*y

私が走っているとき celery beat -s celerybeat-schedule、私は得ています

Configuration -> . broker -> redis://localhost:6379/0 . loader -> celery.loaders.default.Loader . scheduler -> celery.beat.PersistentScheduler . db -> celerybeat-schedule . logfile -> [stderr]@INFO . maxinterval -> now (0s) [2012-08-28 12:27:17,825: INFO/MainProcess] Celerybeat: Starting... [2012-08-28 12:28:00,041: INFO/MainProcess] Scheduler: Sending due task mytasks.add [2012-08-28 12:29:00,057: INFO/MainProcess] Scheduler: Sending due task mytasks.add [2012-08-28 12:30:00,064: INFO/MainProcess] Scheduler: Sending due task mytasks.add [2012-08-28 12:31:00,097: INFO/MainProcess] Scheduler: Sending due task mytasks.add

今、私は引数を渡したことがわかりません(16,16)。次に、この関数の答えを得るにはどうすればよいですかadd(x,y)

4

1 に答える 1

4

ご質問の内容をよく理解できていませんが、私が知る限り、お客様の問題は次のいずれかである可能性があります。

1) celeryd (ワーカーデーモン) を実行していますか? そうでない場合は、ターミナルでセロリ ワーカーを起動しましたか? セロリ ビートはタスク スケジューラです。ワーカーではありません。Celerybeat はタスクをスケジュールするだけです (つまり、ワーカーが最終的に消費できるようにタスクをキューに入れます)。

2) 結果をどのように表示する予定でしたか? 彼らはどこかに救われていますか?結果バックエンドを redis に設定したため、結果は少なくとも一時的にredis 結果バックエンドに保存されます。

于 2012-08-29T20:22:34.413 に答える