2017-09-19 1 views
0

django app에서 샐러리와 redis 사용에 관해 묻고 싶습니다. 나는 약 2 일 동안 셀러리에 대해 배우고 있는데, 아직도 약간 혼란 스럽다./셀러리와 재발견을 설치했는데 잘 작동한다. 내 문제는 사용자가 정기적 인 작업을 생성, 업데이트 및 일시 중지하도록하려는 것입니다. 나는이 기사를 읽었습니다 - http://kindshofer.net/2016/11/19/dynamically_adding_a_periodic_task_to_celery.html과이 질문 - How to dynamically add/remove periodic tasks to Celery (celerybeat) 다른 기사의 loooot이지만이 두 가지만큼 유용하지는 않습니다.) 그리고 django-celery를 사용해야합니다. 나는 훌륭한 옵션이라고 생각했지만 장고 셀러리는 django 결과 백엔드를 사용한다는 것을 읽었다. (여기서는 ->https://github.com/celery/django-celery), 나는 redis를 사용하고 싶다. redis와 함께 장고 - 셀러리를 사용할 수 있습니까? 어쩌면 장고 셀러리와 나는 redis를 사용할 필요가 없습니까? 어쩌면 사용자가 정기적 인 작업을 만들 수있는 다른 방법이 있을까요? 나는 많은 것들이있을 것이고 완벽 할 필요가 있기 때문에 나의주기적인 작업이 빠르고 가벼워 야 할 필요가있다. (그래서 내가 다른 곳으로 밀어 넣을 필요가 있다고 생각했다.) 정말 감사드립니다.사용자가 셀러리 정기 작업을 작성하도록하십시오

답변

0

나는 당신이 혼란을하고 있다고 생각한다. 셀러리는 메시지 중개자로서 Redit 서버를 필요로하는데,이 2 가지를 시스템에 전역으로 설치해야한다.이 2 가지 도구를 장고와 통합하려면 (가장 좋은 선택은 당신의 가상 환경에 있어야합니다.) django_celery_beat django를 사용하여 셀러리 작업을 저장하기 위해 crontab 및 django_celery_results를 사용하는 주기적 작업 ...

물론 사용자가 정기적으로 작업을 시작하고 사용자 정의 할 수 있습니다. (템플릿에서 폼을 사용하여) 사용자 입력을 받아 들여 그 입력을 받아서 tasks.py 파일의 함수에 넘깁니다. tasks.py에서 작업을 수행하는 함수를 만들 수 있습니다!

이 가이드

매우 유용합니다 : https://github.com/codingforentrepreneurs/Guides/blob/master/all/Celery_Redis_with_Django.md

1

빠르고 가볍고 레디 스 == Python RQ. 그러나 취업 정지가 문제가 될 수 있습니다.

셀러리 문제 : 결과 백엔드는 결과 만 저장합니다. 대기열을 처리하지 않습니다. 그러나 그렇다하더라도, 당신은 레디 스에 결과를 보낼 수 있습니다

CELERY_RESULT_BACKEND = 'django-cache' 

구성 cache을 :

CACHES = { 
    "default": { 
     "BACKEND": "django_redis.cache.RedisCache", 
     "LOCATION": "redis://127.0.0.1:6379/1", 
     "OPTIONS": { 
      "CLIENT_CLASS": "django_redis.client.DefaultClient", 
     } 
    } 
} 

그러나 - django-db 백엔드를 사용하는 이유는이 결과를 통해 검색어 세트를 만들 수 있다는 것입니다. 일반적으로 결과는보기에 표시되고 작업은 일반적으로 그렇지 않기 때문에 일반적으로 더 유용합니다. 결과를 집계 (평균 작업 실행 시간과 같음)하고 그래프를 생성 할 수 있기 때문에 Django에서 매우 유용하며 ORM을 사용하여 키/값 저장소가있는 Python에서이 항목을 정렬/집계하는 것이 훨씬 쉽습니다.

관련 문제