小编use*_*631的帖子

在Django中无法捕获Celery操作错误

我有以下代码:

def save()
   super().save(*args, **kwargs)
   try:
       transaction.on_commit(lambda: c_task.delay(a, b, self.pk))
   except Exception as e:
       print(e)

@app.task(bind=True, name='c_task', max_retries=4, soft_time_limit_exception=300)
def c_task(self, a, b, i):

    from .models import ModelA

    try:
        json_data = entity(a,b,i, const)
        .....
    except Exception as e:

        raise self.retry(exc=e, countdown=exponential_backoff(self))
Run Code Online (Sandbox Code Playgroud)

如果Redis服务器失败,我会收到和OperationalError。我尝试像以前一样使用Celery OperationalError或通用异常来捕获它。

该行仍在执行并引发错误。如果Redis失败,我不希望一切都失败,因为我的代码有一个“解决方法”,但我无法捕获错误。

追溯:

 transaction.on_commit(lambda: c_task.delay(a, b, self.pk))

\lib\site-packages\celery\app\task.py in delay

            return self.apply_async(args, kwargs)

lib\site-packages\celery\app\task.py in apply_async

                **options

\lib\site-packages\celery\app\base.py in send_task

                    amqp.send_task_message(P, name, message, **options)

\lib\contextlib.py in __exit__

                    self.gen.throw(type, value, traceback)

\lib\site-packages\kombu\connection.py in _reraise_as_library_errors

                        sys.exc_info()[2])

\lib\site-packages\vine\five.py in reraise

                raise …
Run Code Online (Sandbox Code Playgroud)

django celery

5
推荐指数
1
解决办法
353
查看次数

字符串列表中的字符串连接,前面有一个praticle,每个元素使用一个

我有一个字符串数组:

data = ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)

我想获得:

s.a, s.b, s.c, s.d
Run Code Online (Sandbox Code Playgroud)

我试过了:

"s., ".join(fields)
Run Code Online (Sandbox Code Playgroud)

不起作用,因为我需要s.在前面和,最后

python string python-3.x

5
推荐指数
2
解决办法
67
查看次数

Nginx与gunicorn双重授权

我想使用http auth,但也使用gunicorn的反向代理.

对于http auth,我使用:

location = admin.html {
 auth_basic 'Login Required'
 auth_basic__use_file etc/nginx/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)

对于gunicorn,代理反向我发现:

try_files $uri @gunicorn;
Run Code Online (Sandbox Code Playgroud)

我如何将两者结合起来?

python nginx gunicorn

5
推荐指数
1
解决办法
192
查看次数

NGINX 配置文件的顺序是什么

我有以下配置文件和位置:

etc/ngnix/nginix.conf
var/etc/nginx/sites-available/myproject
etc/ngnix/conf.d/default.conf
etc/ngnix/conf.d/web.conf
Run Code Online (Sandbox Code Playgroud)

我对每个 conf 文件角色、规则、何时使用一个或另一个感到困惑,它们是一个接一个加载还是一个一个加载,指令是否覆盖?

nginx

4
推荐指数
1
解决办法
2346
查看次数

OneToOne Model 删除 Cascade 的两种方式

我有 2 个型号:

   class A(models.Model):
        name = models.CharField(max_length=50)


        def __str__(self):
            return "%s the place" % self.name

    class B(models.Model):
        a = models.OneToOneField(Place,on_delete=models.CASCADE)
        name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

我想:

  1. 如果A被删除,B也会被删除(有效)
  2. 如果 B 被删除,A 也会被删除

django django-models

4
推荐指数
1
解决办法
1131
查看次数

Django ManytoManyField 和小部件

我有两个模型,产品和类别以及产品中的多对多字段。类别在 ProductCreate 视图中显示为键。

我需要为类别自定义小部件和字段。

我检查了 Django 源字段和小部件,但没有看到 ManyToMany 的引用(类)。

什么类型的 Field 和 Widget ManyToMany 关系对应(我假设是 Charfield 作为 save 还是 SelectField)?我在哪里可以找到代码?(在这种情况下自定义字段/小部件的示例)

django django-forms django-widget

3
推荐指数
1
解决办法
9229
查看次数

创建后带参数的 get_success_url

我有 2 个部分,一个用于普通用户,一个用于管理员(与 Django 管理员无关)。例如,我有一个产品模型。

在模型中,我使用 get_absolute_url 为普通用户设置详细 url。

产品创建位于管理部分,success_url 需要转到新创建的产品详细信息视图。

我需要获取新的 pk 并使用 get_success_url。

  def get_success_url(self):
        return reverse_lazy('accounts:detail_company', kwargs={'pk': self.pk})
Run Code Online (Sandbox Code Playgroud)

会给我以下错误:

'AccountCompanyCreateView' object has no attribute 'pk'
Run Code Online (Sandbox Code Playgroud)

django django-views django-class-based-views

3
推荐指数
1
解决办法
3615
查看次数

避免在 Django 中循环导入

我有两个模型 Company 和 Actions:

from companies.models import Company

class Action(models.Model):

    company = models.ForeignKey(Company, blank=True, null=True, related_name='activity', on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

然后我在 utils.py 中有一个实用程序

from .models import Action

def create_action(user, verb, target_name=None, target=None):
    action = Action(user=user, verb=verb, target=target)
Run Code Online (Sandbox Code Playgroud)

我在公司模型中调用了这个实用程序def save,所以我有公司模型:

from not.utils import create_action 
Run Code Online (Sandbox Code Playgroud)

所以 Action Model 将 Company Model 导入为 FK,utils 导入 Action Model,Company Model 导入 utils

现在,由于循环导入,Django 给出了一个错误:

ImportError: cannot import name 'Company'
Run Code Online (Sandbox Code Playgroud)

我在这里看到了一些 q/a 直接使用导入(没有来自)我试过但没有奏效

import not.utils as nt
nt.create_action(...)
Run Code Online (Sandbox Code Playgroud)

python django django-models python-import python-3.x

3
推荐指数
1
解决办法
2787
查看次数

在 Vue3 组合 API 中使观察者立即工作

使用 Vue3 组合 API。我如何让手表立即工作。以下代码不起作用。

watch((immediate=true) => props.isOpen, () => {
        if (props.isOpen && props.preventBackgroundScrolling) {
          document.body.style.setProperty('overflow', 'hidden')
        } else {
          document.body.style.removeProperty('overflow')
        }

          });
Run Code Online (Sandbox Code Playgroud)

vue.js vuejs3 vue-composition-api

3
推荐指数
1
解决办法
2191
查看次数

在foreach循环中动态创建javascript对象

我想在 foreach 循环中创建对象:

我从这个开始:

data.forEach(function (el) {
        var dynamic_var = new Quill(el['editor']);
         dynamic_var.on('text-change', logHtmlContent);})
Run Code Online (Sandbox Code Playgroud)

但是,dynamic_var 被“覆盖”了,我想保持独特。

我检查了一些 html 元素,对于我发现的每个元素,我想创建一个新对象,并执行对象方法。

在我的情况下,变量每次迭代都会得到一个新对象,不是新变量。

javascript javascript-objects

2
推荐指数
1
解决办法
636
查看次数