Django 프로젝트에서 batch job 돌리기

  1. django-background-tasks 모듈 활용하기

    • docs
    • 샘플 프로젝트
    • 모듈 install:
      • $ pip install django-background-tasks
        # django-compat 에 대한 의존성이 있기 때문에 관련하여 추가 업데이트가 필요할 경우도 있다
        
    • 모듈 관련 설정
      • # settings.py
          INSTALLED_APPS = (
              # ...
              'background_task', # batch job 관련 library
              # ...
          )
        
      • $ python manage.py makemigrations background_task
        $ python manage.py migrate
        
  2. 동작방식

    • django 웹과 별도의 프로세스로 동작 시키기
      • 별도의 명령어 실행
      • $ python manage.py process_tasks
        
    • django 웹안에서 동작 시키기

      • API 형태로 호출하여 실행
      • # urls.py
            urlpatterns = [
                   url(r'^v1/tasks/$', views.tasks, name='tasks'),
              ]
        
        # views.py
         @csrf_exempt
         def tasks(request):
             if request.method == 'POST':
                 message = request.POST.get('message', False)
                 return demo_task(request)
             else:
                return JsonResponse({}, status=405)
        
         @background(schedule=60)
         def demo_task(message):
            logger.debug('demo_task. message={0}'.format(message))


'개발 > python' 카테고리의 다른 글

Python multiprocess vs multithread  (0) 2018.05.24
django mysql rest api project  (0) 2018.03.11
Django 프로젝트  (0) 2017.11.29
Django 프로젝트 생성 및 App 만들기  (0) 2017.08.27
Python Django WEB project 개발하기1  (0) 2016.08.17
Posted by 감각적신사
,