2017-09-21 28 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) 

しかし、私は私のテストでタスクを実行しようとしたとき:

# in test_tasks.py 

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

私は

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

次のエラーを取得する私の質問はこれです、それはこのクライアントを使用することが可能ですセロリのタスク内のライブラリ?私がセロリの仕事でこのライブラリを使用できるようにするためにできることは何ですか?

答えて

0

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) 

は、アプリケーションインスタンスにメソッドをバインドするソリューションは、そのパラメータを削除することでした。

関連する問題