다른 API 목록을 반환하는 API가 있습니다.다른 셀러 리 작업이 작동하지 않는 셀러리 정기 작업
15 분마다 이러한 API에 액세스하여 데이터를 데이터베이스에 반환해야합니다.
다음은 셀러리 및 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
기능은 access_one_API
기능
셀러리 서버가 성공적으로 터미널에서 시작하지만 어느 fetch_data_of_all_APIs
도 access_one_API
시작을 실행하는 다수의 근로자를 사용하도록되어 15 분마다 실행해야합니다.
fetch_data_of_all_APIs
함수 내에서 코드를 추출하면 access_one_API
이 여러 셀러리 작업자에 의해 시작되고 실행될 수 있습니다. 그러나 이러한 코드를 함수 내에 넣고 @celery.task
으로 꾸미면 두 함수가 모두 시작되지 않습니다.
그래서 나는 그것이 셀러리와 관련이 있어야한다고 생각합니다.
미리 감사드립니다.
'@ celery.task()'데코레이터가 필요합니다. 또한, 현재 샐러리 버전이 소문자로 설정되어 있으므로'celery-beat' 설정 매개 변수를 확인해야합니다. –