2017-09-21 13 views
0

postmarker client library을 사용하여 이메일을 보내는 샐러리 작업을 작성하려고합니다. 이것은 postmarkapp.com API 엔드 포인트를 호출하는 간단한 클라이언트 라이브러리입니다. 내 테스트에서 작업을 실행하려고 할 때포스트 마커를 사용하여 셀러리 작업을 작성하는 방법

# In tasks.py 

@app.task(bind=True) 
def send_email(...): 
    """Sends a single email via Postmark.""" 
    postmark = PostmarkClient(...) 
    response = postmark.emails.send(...) 
    log.info('Postmark API send_email response %s', response) 

그러나 : 나는 다음과 같은 오류 내 질문은 이것이다

TypeError: <@task: tasks.send_email of groot at 0x7f2c35b9e911> is not JSON serializable 

을 얻을

# in test_tasks.py 

class PostmarkSendEmail(TestCase): 
    def test_call_send_email(self): 
     send_email(...) 

를,이 클라이언트를 사용할 수 있습니다 셀러리 작업 내의 라이브러리? 셀러리 작업에서이 라이브러리를 사용할 수 있도록 할 수있는 방법이 있습니까?

답변

0

@app.task()bind=True 매개 변수가 전달 된 문제가 발견되었습니다. 나는 send_email 방법에 self 매개 변수를 추가 할 수, 또는

@app.task() 
def send_email(...): 
    """Sends a single email via Postmark.""" 
    postmark = PostmarkClient(...) 
    response = postmark.emails.send(...) 
    log.info('Postmark API send_email response %s', response) 

: 다음 bind 매개 변수로

@app.task(bind=True) 
def send_email(self, ...): 
    """Sends a single email via Postmark.""" 
    postmark = PostmarkClient(...) 
    response = postmark.emails.send(...) 
    log.info('Postmark API send_email response %s', response) 

는 응용 프로그램 인스턴스에 대한 방법을 결합 솔루션은 그 매개 변수를 제거하는 것이었다.