RQ 태스크 큐에 대한 더 간단한 대안

초보자를 위한 설명: 백그라운드 작업자는 실행하는 데 몇 초 이상 걸리는 작업이 있을 때 사용됩니다. 사용자가 해당 작업이 실행될 때까지 기다리게 하는 대신 백그라운드 작업자에게 보냅니다.

이 문제를 해결하는 몇 가지 프로젝트가 있지만 사용하고 구성하기가 더 쉬운 솔루션을 원했기 때문에 kerground(작업자 + 배경)라고 하는 프로젝트를 구축했습니다.

kerground 작업은 다음과 같습니다.
  • 먼저 작업자 파일에서 실행하는 데 몇 초 이상 걸리는 함수를 추가합니다.
  • 둘째, API에서 Kerground 클래스를 가져와서 인스턴스화하고 kerground 작업자에게 이벤트 전송을 시작합니다.

  • 빠른 시작



    설치

    pip install kerground
    

    _worker.py 접두사로 이름을 지정하여 파일 작업자를 표시합니다.

    my_worker.py
    


    Kerground는 *_worker.py를 살펴보고 각 함수를 이벤트로 간주합니다.

    api/views/dispacher에서 kerground 인스턴스를 가져오고 이벤트 전송을 시작하십시오.

    #my_api.py
    
    from kerground import Kerground
    
    ker = Kerground()
    
    @app.route('/some-task')
    def long_wait():
        id = ker.send('long_task') 
        return {'id': id}
    
    


    이벤트long_task는 *_worker.py 파일의 함수 이름입니다.

    #my_worker.py
    import time
    
    def long_task():
        # heavy workoad, more than a few seconds job
        time.sleep(2)
    
    


    API와 작업자는 동일한 패키지/디렉토리에 있어야 합니다.

    root
    ├── api
    │   ├── __init__.py
    │   └── my_api.py
    └── worker
        ├── __init__.py
        └── my_worker.py
    


    예제 디렉터리에서 2개의 cmd/터미널 창을 엽니다.
  • 터미널 중 하나에서 APIpython3 api/my_api.py를 시작합니다.
  • 다른 하나의 유형 kerground .



  • 위에는 Flask를 사용한 kerground의 실행 예가 있습니다. 보시다시피 kerground는 최소한의 설정으로 되어 있으며 사용하기 매우 쉽습니다. 영감은 터미널에 pytest를 입력하기만 하면 거의 0 구성으로 테스트가 발견되고 실행되는 pytest에서 나왔습니다.

    커그라운드 저장소here를 확인하십시오.

    좋은 웹페이지 즐겨찾기