私はセロリが初めてで、セロリを使用して非同期タスクの実行に取り組んでいます。
- タスクの結果を MongoDB に保存したいと考えています。
- AMQP ブローカーを使用したい。
Celery プロジェクトの例はあまり役に立ちませんでした。誰かが私にいくつかの実例を教えてもらえますか?
MongoDB をバックエンド ストアとして使用するには、MongoDB をバックエンドとして使用するように Celery を明示的に構成する必要があります。
http://docs.celeryproject.org/en/latest/getting-started/brokers/mongodb.html#broker-mongodb
あなたが言ったように、ドキュメントは完全な実例を示していません。Celery を使い始めたばかりですが、MongoDB を使用しています。MongoDB と Celery http://skillachie.com/?p=953を使用して短い作業チュートリアルを作成しました
ただし、これらのスニペットには、Celery と MongoDB を使用して Hello World を実現するために必要なものがすべて含まれている必要があります。
セロリconfig.py
from celery.schedules import crontab
CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
"host": "127.0.0.1",
"port": 27017,
"database": "jobs",
"taskmeta_collection": "stock_taskmeta_collection",
}
#used to schedule tasks periodically and passing optional arguments
#Can be very useful. Celery does not seem to support scheduled task but only periodic
CELERYBEAT_SCHEDULE = {
'every-minute': {
'task': 'tasks.add',
'schedule': crontab(minute='*/1'),
'args': (1,2),
},
}
タスク.py
from celery import Celery
import time
#Specify mongodb host and datababse to connect to
BROKER_URL = 'mongodb://localhost:27017/jobs'
celery = Celery('EOD_TASKS',broker=BROKER_URL)
#Loads settings for Backend to store results of jobs
celery.config_from_object('celeryconfig')
@celery.task
def add(x, y):
time.sleep(30)
return x + y