小编Bor*_*kov的帖子

应用于方法的可调用对象装饰器在输入时不会获得自我参数

import functools


class Decor(object):
    def __init__(self, func):
         self.func = func

    def __call__(self, *args, **kwargs):
        def closure(*args, **kwargs):
            print args, kwargs
            return self.func(*args, **kwargs)
        return closure(*args, **kwargs)


class Victim(object):
    @Decor
    def sum(self, a, b):
        return a+b


v = Victim()
v.sum(1, 2)
Run Code Online (Sandbox Code Playgroud)

结果是:

(1, 2) {}
Traceback (most recent call last):
  File "test.py", line 19, in <module>
    v.sum(1, 2)
  File "test.py", line 11, in __call__
    return closure(*args, **kwargs)
  File "test.py", line 10, in closure
    return self.func(*args, **kwargs)
TypeError: sum() takes exactly 3 …
Run Code Online (Sandbox Code Playgroud)

python functional-programming decorator parameter-passing python-decorators

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

多线程Web服务器上的python + wsgi:这是竞争条件吗?

假设我写了一个wsgi application.我上运行此应用程序Apache2Linux多线程mod-wsgi配置,让我的应用程序在每一个进程的多个线程运行:

WSGIDaemonProcess mysite processes=3 threads=2 display-name=mod_wsgi
WSGIProcessGroup mysite
WSGIScriptAlias / /some/path/wsgi.py
Run Code Online (Sandbox Code Playgroud)

应用程序代码是:

def application(environ, start_response):
    from foo import racer
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return [racer()] #call to racer creates a race condition?
Run Code Online (Sandbox Code Playgroud)

模块foo.py:

a = 1
def racer():
    global a
    a = a + 1
    return str(a)
Run Code Online (Sandbox Code Playgroud)

我只是用变量创建了一个竞争条件a吗?我想,a是一个模块级变量,它存在于foo.py线程中并且是相同的(共享的)?

从中得出更多的理论问题:

  1. 同一个进程内的并发线程访问并修改相同的a变量,所以我的例子不是线程安全的?
  2. 如果我的web服务器是Apache,Linux上我的应用程序的每个线程都是用C语言创建的pthreadsAPI和函数,pthread必须执行的是某种python解释器的主要功能?或者Apache是​​否以某种方式保护我免受此错误的影响?
  3. 如果我是像蟒蛇编写的Web服务器上运行这个 …

python django multithreading wsgi gil

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

上传后烧瓶重定向不起作用

我基本上想在上传后转到不同的页面。这里发生的情况是文件上传速度非常快并保存在服务器上,但之后客户端(我的浏览器)每次都处于等待阶段,等待后甚至没有重定向。如果我删除它,我不会按预期得到任何响应,并且一切都会在几毫秒内发生。

@blah.route('/upload', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST' and 'file' in request.files:
        file = request.files['file']
        if file:
            filename = secure_filename(file.filename)
            file.save(os.path.join('./tmp/uploads', filename))
            print '%s file saved' % filename

            return redirect(url_for("blah.list_uploads"))  
    return render_template('blah/upload.html')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

编辑:不确定说我正在使用 DropzoneJS 是否会有所帮助。我认为默认情况下它使用 Ajax。也许它与那个有关?

python flask dropzone.js

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

自定义引导按钮字体

我正在使用 Bootstrap 的 sass 版本,并且想要自定义按钮的字体,使其与系统字体不同。

我没有看到任何 sass/less 变量会修改我的按钮的字体系列:http://getbootstrap.com/customize/#buttons

那么,我该如何实现这一目标呢?

fonts sass twitter-bootstrap

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

如何在Django中的查询集中执行两个内连接

我有三个型号.

class A(models.Model):
    status = models.PositiveSmallIntegerField()
    status_time = models.DateTimeField(auto_now_add=True)
    b = models.ForeignKey(B)
    d=models.ForeignKey(D)

class B(models.Model):
    ***other Fileds*****
    c = models.OneToOneField(C)
    ***other fields***

class C(models.Model):
    c_name = models.CharField(max_length=9,unique=True)
Run Code Online (Sandbox Code Playgroud)

我想执行一个查询,我可以获得所有的c_name.

SELECT * FROM A inner join B  on A.b_id=B.id inner join 
C  on B.c_id=C.id where A.d_id=1 and A.status=6
Run Code Online (Sandbox Code Playgroud)

谁能请帮忙怎么做.我在这里发现了一个类似的问题,但对于像我这样的新手来说理解起来太复杂了.为了任何帮助,你已经非常了解你.

python sql django

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

Django:如何有效地将 select_lated() 与 Paginator 一起使用?

我有 2 个相关模型,每个模型有 1000 万行,并且想要对其中一个模型的 50000 个项目执行高效的分页请求,并访问另一个模型上的相关数据:

class RnaPrecomputed(models.Model):
    id = models.CharField(max_length=22, primary_key=True)
    rna = models.ForeignKey('Rna', db_column='upi', to_field='upi', related_name='precomputed')
    description = models.CharField(max_length=250)


class Rna(models.Model):
    id = models.IntegerField(db_column='id')
    upi = models.CharField(max_length=13, db_index=True, primary_key=True)
    timestamp = models.DateField()
    userstamp = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,与通过外键RnaPrecomputed相关。现在,我想获取 50 000 个项目以及与它们相关的相应 sRNA的特定页面。如果我在不调用的情况下执行此操作,我预计会出现 N+1 请求问题。以下是时间安排:RnaPrecomputedRnaselect_related()


首先,作为参考,我根本不会碰相关模型:

rna_paginator = paginator.Paginator(RnaPrecomputed.objects.all(), 50000)
message = ""
for object in rna_paginator.page(400).object_list:
    message = message + str(object.id)
Run Code Online (Sandbox Code Playgroud)

需要:

real    0m12.614s
user    0m1.073s
sys 0m0.188s
Run Code Online (Sandbox Code Playgroud)

现在,我将尝试访问相关模型上的数据:

rna_paginator = paginator.Paginator(RnaPrecomputed.objects.all(), …
Run Code Online (Sandbox Code Playgroud)

sql django orm

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

Django REST Framework:如何使POST时需要Id字段,即非只读字段?

我有一个模型,其中我已将id重写为CharField和主键。这是模型及其序列化器:

class Tool(models.Model):
    id = models.CharField(max_length=10000, primary_key=True, default=uuid.uuid4, editable=False)
    description = models.TextField(null=True, blank=True)
    ...

class ToolSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = Tool
        fields = (
            'id',
            'description',
            ...
        )
Run Code Online (Sandbox Code Playgroud)

默认情况下,Django REST Framework将id字段标记为只读,并且在POST请求时不需要此字段。但是我希望它是可写的,并且在POST时要求它。我该如何实现?

django django-rest-framework

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

我可以从 DRF 中完全删除序列化程序吗?

我正在尝试将 Django REST Framework 与 MongoDB 结合使用。

我尝试将 Mongoengine 与 Django-REST-Framework-Mongoengine 一起使用,但它不起作用(或者我做错了什么,但缺少文档,所以我不知道如何正确执行)。

现在我正在尝试完全摆脱 Mongoengine 层并直接使用 PyMongo。

本质上,要在经典 Django REST Framework 中创建每个 enpoint,您需要一个三元组:

(ViewSet, Serializer, Model)

使用 PyMongo 我将Model完全放弃图层。问题是:我必须保持Serialier水平吗?我可以创建一个ViewSet完全没有Serializer并且有Browsable API工作的吗?对我来说 Django REST Framework 的杀手级功能是Browsable API和 request Parsers

Browsable API绝对需要吗Serializer

django-rest-framework

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

go 模块可以没有 go.mod 文件吗?

go.mod我遇到了一个似乎是 Go 模块的存储库,但其中没有文件:github.com/confluenceinc/confluence-kafka-go。

go 模块没有包含依赖项的文件是否可以go.mod,或者该库的作者还没有迁移到模块?

go go-modules

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

带有 ARM M1 的 Mac 上的 cmake 正在运行 x86_64 架构而不是 arm64 的链接器

我正在尝试使用 M1 arm64 处理器在 Mac 上从源代码编译glfw,在运行链接器时,cmake 奇怪地尝试链接 x86_64 架构的项目,而二进制文件是为 arm64 构建的。

我克隆该项目,创建名为 的构建文件夹cmake-build-debug,并使用 Makefile 等在其中生成构建系统,如下所示:

git clone https://github.com/glfw/glfw.git
cd glfw
mkdir cmake-build-debug
cd cmake-build-debug
cmake -S .. -B . -DCMAKE_BUILD_TYPE=Debug -DCMAKE_HOST_SYSTEM_PROCESSOR=arm64 -DCMAKE_SYSTEM_PROCESSOR=arm64
Run Code Online (Sandbox Code Playgroud)

这很好用。但现在我用makeor构建它cmake --config Debug --build ..o二进制文件生成得非常好,但由于某种原因,cmake 使用 x86_64 目标架构错误地调用了链接器脚本:

-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Including Cocoa support
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/burkov/Documents/Projects/open-source/glfw/cmake-build-debug
[ 47%] Built target glfw …
Run Code Online (Sandbox Code Playgroud)

c++ macos cmake glfw apple-m1

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