我向我的模型添加了新权限,然后使用了manage.py makemigrations。它创建了一个改变模型选项(特别是权限......)的迁移。
后来,我添加了一个依赖于第一个迁移的迁移,并使用了权限(我相信创建的第一个迁移)。该迁移使用了查询 auth_permissions 的 RunSQL 操作中的权限。
当我调试迁移时 - 我意识到只有在应用所有迁移之后才会插入身份验证权限。
含义 - 当我尝试查询权限的 id 以便在第二次迁移中使用它时 - 它不存在,因此第二次迁移不会按预期运行。
知道为什么会发生这种情况以及如何预防吗?我在添加新权限时的假设是,它将与 django 为我创建的迁移一起添加......而不是在不同的阶段。
谢谢!
嘿 :)
所以我在代码中遇到了一个错误,在尝试解决它时 - 我编写了这个小芹菜任务:
@shared_task(bind=True, name='sometask', autoretry_for=(Exception,), default_retry_delay=1)
def sometask(self, items, *args, **kwargs):
print(self.max_retries)
raise Exception
Run Code Online (Sandbox Code Playgroud)
我尝试通过在签名上调用 set() 来覆盖重试:
s = sometask.s(items=[]).set(max_retries=200, countdown=1)
s()
Run Code Online (Sandbox Code Playgroud)
当我检查输出时,我可以看到打印的是 3 - celery 中默认的最大重试次数。而不是我的200..
谁能告诉我我做错了什么?
我需要覆盖最大重试次数,这似乎是我唯一的选择,但它并不像我预期的那样工作。
谢谢!