我正在尝试编写一个使用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 :(得分:0)
我发现问题是bind=True
参数传递到@app.task()
。解决方案是删除该参数:
@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)
或者,我可以将self
参数添加到send_email
方法:
@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)
作为bind
参数,将方法绑定到App实例。