celery以下代码中的bind=True是什么意思?何时使用,何时不使用?

@app.task(bind=True)
def send_twitter_status(self, oauth, tweet):
    try:
        twitter = Twitter(oauth)
        twitter.update_status(tweet)
    except (Twitter.FailWhaleError, Twitter.LoginError) as exc:
        raise self.retry(exc=exc)

推荐答案

只是对其他答案的一小部分补充.如前所述,bound tasks个可以访问任务实例.需要这样做的一个用例是重试:

@celery.task(bind=True, max_retries=5)
def retrying(self):
    try:
        return 1/0
    except Exception:
        self.retry(countdown=5)

另一个用例是,当您希望为任务定义custom states,并能够在任务执行期间设置它时:

@celery.task(bind=True)
def show_progress(self, n):
    for i in range(n):
        self.update_state(state='PROGRESS', meta={'current': i, 'total': n})

Django相关问答推荐

Django:无法分配必须是实例(&Q;X),不想获取对象(&Q;)

测试DRF中需要授权头

Django ORM多表一对多关系问题

包含资源时,DRF 返回我的软删除记录

如何根据反向外键相关模型的字段过滤 QuerySet?

相同的字符串不同的翻译

Django:无法从另一个应用程序导入模型

Django 模型中的隐藏字段

Django删除查询集的最后五个以外的所有内容

断开模型的信号并在 django 中重新连接

Python 和 Django OperationalError (2006, 'MySQL server has gone away')

在 django 中获取本地时区

如何在 twitter-bootstrap 模式窗口中插入 django 表单?

Django:使用render或render_to_response时添加响应头

从基于类的通用视图中获取 request.session

Django模型字段按变量

Django - 一起为 2 个或更多字段创建唯一的数据库约束

Heroku & Django:OSError: No such file or directory:'/app/{myappname}/static'

如何使用 ModelSerializer 显示所有模型字段?

如何将类、id、占位符属性添加到 django 模型表单中的字段