在 Linux 系統中,使用 Celery 進行任務調度需要以下幾個步驟:
安裝 Celery:
使用 pip 安裝 Celery:
pip install celery
創建一個 Celery 實例:
在你的項目中創建一個名為 celery.py
的文件,然后創建一個 Celery 實例。例如:
from celery import Celery
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@app.task
def add(x, y):
return x + y
這里,我們創建了一個名為 add
的任務,它接受兩個參數并返回它們的和。
配置 Celery:
在項目根目錄下創建一個名為 celeryconfig.py
的文件,用于存放 Celery 的配置信息。例如:
BROKER_URL = 'pyamqp://guest:guest@localhost:5672/'
CELERY_RESULT_BACKEND = 'rpc://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TIMEZONE = 'Asia/Shanghai'
CELERY_ENABLE_UTC = True
啟動 Celery worker:
在終端中,進入到你的項目目錄,然后運行以下命令啟動 Celery worker:
celery -A celery worker --loglevel=info
-A celery
指定了 Celery 實例的位置,worker
表示啟動一個 worker 進程,--loglevel=info
設置日志級別為 info。
調用任務:
現在你可以在其他 Python 腳本或交互式解釋器中調用 Celery 任務。例如:
from celery import Celery
app = Celery('tasks', broker='pyamqp://guest@localhost//')
result = app.send_task('tasks.add', args=(4, 4), countdown=10)
print(result.get())
這里,我們調用了之前定義的 add
任務,并設置了 10 秒的延遲。result.get()
會等待任務完成并返回結果。
設置定時任務:
要設置定時任務,你需要在 celeryconfig.py
文件中添加一個名為 CELERYBEAT_SCHEDULE
的字典。例如:
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'tasks.add',
'schedule': 30.0,
'args': (1, 1)
},
}
這里,我們設置了一個每 30 秒執行一次的定時任務,調用 add
任務并傳入參數 (1, 1)。
啟動 Celery beat:
在終端中,進入到你的項目目錄,然后運行以下命令啟動 Celery beat:
celery -A celery beat --loglevel=info
-A celery
指定了 Celery 實例的位置,beat
表示啟動一個 beat 進程,--loglevel=info
設置日志級別為 info。
現在你已經成功設置了 Celery 任務調度。你可以根據需要添加更多的任務和定時任務。