4
我有一個API,它返回其他API的列表。執行其他芹菜任務不工作的芹菜週期性任務
我需要訪問這些API每隔15分鐘,並把返回到數據庫中的數據。
下面是我用芹菜和Redis的在celery_worker.py文件中寫道。但是所有的任務都沒有開始。
list_of_APIs = requests.get(the_api_that_returns_list_of_APIs).json()
CELERYBEAT_SCHEDULE = {
'every-15-minute': {
'task': 'fetch_data_of_all_APIs',
'schedule': timedelta(minutes=15),
},
}
@celery.task
def access_one_API(one_API):
return requests.get(one_API).json()
@celery.task(name='fetch_data_of_all_APIs')
def fetch_data_of_all_APIs():
for one_API in list_of_APIs:
task = access_one_API.delay(one_API)
# some codes to put all task.id into a list_of_task_id
for task_id in list_of_task_id:
# some codes to get the results of all tasks
# some codes to put all the results into a database
的fetch_data_of_all_APIs
功能應每15分鐘,這是應該使用多個工人跑access_one_API
功能
芹菜服務器啓動成功的終端但既不fetch_data_of_all_APIs
也不access_one_API
開始運行。
如果我提取fetch_data_of_all_APIs
函數中的代碼,access_one_API
可以啓動並由多個芹菜工作人員執行。但只要我將這些代碼放在一個函數中並用@celery.task
來修飾它,那麼這兩個函數都不會啓動。
所以我相信它一定與芹菜有關。
非常感謝提前。
請注意,您需要'@ celery.task()'裝飾器。另外,您需要檢查'celery-beat'配置參數,因爲當前的芹菜版本使用小寫設置。 –