小编one*_*oop的帖子

Django登录到控制台

我正在尝试设置一个记录器,它将登录到控制台(我想要这个,因为我正在使用Heroku和Papertrails(Heroku的日志插件),写入控制台的东西将显示在Papertrails中,使其可过滤,所有很棒的Papertrail功能.)

在设置中我首先尝试以下内容:

LOGGING = {
    'handlers' = {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'mysite.log',
            'formatter': 'verbose'
        },
        'console':{
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    (...)
    'loggers'={
        (...)
        'page_processors': {
            'handlers': ['console','file'],
            'level': 'DEBUG',
        }
    }
    (...)
}
Run Code Online (Sandbox Code Playgroud)

根据Django的日志页面(对于那些不使用Mezzanine的人,page_processors是Mezzanine在你打开页面时运行的东西;你可以认为它们就像Django的视图,但它们只做上下文,而不是渲染).

在page_processors.py我有

import logging
logger = logging.getLogger(__name__)

@process_for(MyPage):
def myfunc(request, Page):
    logger.info('page_processor logging test')
    print 'my page_processor print'
    (...)
Run Code Online (Sandbox Code Playgroud)

当我刷新页面时,我没有看到记录器,但是我看到打印和日志到文件:

[02/Mar/2014 23:07:10] INFO [myApp.page_processors:13] page_progessor logging test
Run Code Online (Sandbox Code Playgroud)

所以我知道逻辑正在发挥作用.谷歌搜索后,我发现这个这个页面正好解决了这个问题.他说默认情况下logging.StreamHandler会记录到STDERR.如果我们要记录到STDOUT,您应该将关键字参数'stream'添加到logging.StreamHandler构造中,因此配置处理程序如下:

'handlers':{
    (...)
    'console':{
        'level': 'DEBUG',
        'class': 'logging.StreamHandler',
        'stream': sys.stdout …
Run Code Online (Sandbox Code Playgroud)

python django logging

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

Django form.is_valid()总是假的

我正在编写登录信息.当我手动编写表格时,我得到了它的工作.

以下代码有效:

views.py

def login_view(request):
    if request.method == 'GET':
        return render(request, 'app/login.htm')
    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = auth.authenticate(username=username, password=password)
        if user is None:
            return HttpResponseRedirect(reverse('error'))
        if not user.is_active:
            return HttpResponseRedirect(reverse('error'))

        # Correct password, and the user is marked "active"
        auth.login(request, user)
        # Redirect to a success page.
        return HttpResponseRedirect(reverse('home'))
Run Code Online (Sandbox Code Playgroud)

模板:

<form method="post" action="{% url 'login'  %}">
    {% csrf_token %}
    <p><label for="id_username">Username:</label> <input id="id_username" type="text" name="username" maxlength="30" /></p>
    <p><label for="id_password">Password:</label> <input type="password" …
Run Code Online (Sandbox Code Playgroud)

python forms django

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

Python:压扁拉链?

我有两个要压缩的列表:

a = ((1,2,3), (4,5,6), ... )
h = ('a','b', ... )
Run Code Online (Sandbox Code Playgroud)

一个简单的zip(a,h)回报:

[ ((1,2,3),'a'), ((4,5,6),'b'), ... ]
Run Code Online (Sandbox Code Playgroud)

有什么聪明的方法可以归还吗?

[ (1,2,3,'a'), (4,5,6,'b'), ... ]
Run Code Online (Sandbox Code Playgroud)

python

14
推荐指数
3
解决办法
4105
查看次数

Python重写__init__

我知道有很多人就这个问题提出问题,但我没有看到我的具体问题.子类化时,您可以覆盖__init__()与覆盖任何其他方法相同的方式.我的问题是为什么在下面的例子中这似乎没有正常工作:

import random
class MyRand(random.Random):
    def __init__(self, myvar1, myvar2, x=None):
        # ( ... my code ...)
        super(MyRand, self).__init__(x)
Run Code Online (Sandbox Code Playgroud)

请记住,Random构造函数具有以下签名:__init__(self, x=None)where x是可选种子.我想在我的子类中保留该功能,但我也想要两个必需的变量,myvar1myvar2.

但是,当您尝试实例化(没有种子)时会出现错误:

MyRand('var1', 'var2')
TypeError: seed expected at most 1 arguments, got 2
Run Code Online (Sandbox Code Playgroud)

这是因为python认为你想要Random的构造函数并传递你的两个参数'var1'和'var2'作为种子.种子(从内部Random的构造函数调用)只需要1个参数,因此您会收到错误.

但是,如果你这样做

MyRand(myvar1='var1', myvar2='var2')
Run Code Online (Sandbox Code Playgroud)

这是有效的,这里python知道你传递它的两个必需变量而不传递可选种子.

但我认为第一种情况也应该奏效.这是怎么回事?

python

11
推荐指数
2
解决办法
2569
查看次数

从python线程中消耗rabbitmq队列

这是一个漫长的过程.

我有一个用户名和密码列表.对于每一个我想登录帐户并做一些事情.我想用几台机器来更快地做到这一点.我想这样做的方法是有一台主机,其工作只是有一个cron,它不时检查rabbitmq队列是否为空.如果是,请从文件中读取用户名和密码列表,然后将其发送到rabbitmq队列.然后有一堆订阅了该队列的机器,其作业正在接收用户/通行证,在其上做东西,确认它,然后转到下一个,直到队列为空,然后主机填满它再次.到目前为止,我认为我的一切都失败了.

现在来了我的问题.我已经检查过每个用户/传递要做的事情不是那么密集,因此我可以让每台机器使用python的线程同时执行其中三个.实际上对于一台机器,我实现了这个,我将用户/传递加载到python Queue(),然后让三个线程使用Queue().现在我想做类似的事情,但不是从python Queue()中消耗,每个机器的每个线程都应该从rabbitmq队列中消耗.这就是我被困住的地方.为了运行测试,我开始使用rabbitmq的教程.

send.py:

import pika, sys
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

message = ' '.join(sys.argv[1:])
channel.basic_publish(exchange='',
                      routing_key='hello',
                      body=message)
connection.close()
Run Code Online (Sandbox Code Playgroud)

worker.py

import time, pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
    print ' [x] received %r' % (body,)
    time.sleep( body.count('.') )
    ch.basic_ack(delivery_tag = method.delivery_tag)

channel.basic_qos(prefetch_count=1)
channel.basic_consume(callback, queue='hello', no_ack=False)
channel.start_consuming()
Run Code Online (Sandbox Code Playgroud)

对于上面的内容,您可以运行两个worker.py,它将订阅rabbitmq队列并按预期使用.

我没有rabbitmq的线程是这样的:

runit.py

class Threaded_do_stuff(threading.Thread):
    def __init__(self, user_queue):
        threading.Thread.__init__(self)
        self.user_queue = user_queue

    def run(self):
        while True:
            login = self.user_queue.get()
            do_stuff(user=login[0], pass=login[1])
            self.user_queue.task_done() …
Run Code Online (Sandbox Code Playgroud)

python multithreading rabbitmq

9
推荐指数
1
解决办法
9403
查看次数

Elasticsearch与词干匹配

如何搜索词干匹配?

即目前我有许多文件在item_title字段中包含"滑板"一词,但只有3个文件包含"滑板"一词.因此,当我进行以下搜索时:

POST /my_index/my_type/_search
{
    "size": 100,
    "query" : {
        "multi_match": {
           "query": "skateboards",
           "fields": [ "item_title^3" ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我只得到3个结果.但是,我还希望返回带有"滑板"一词的文件.

根据我对Elasticsearch的理解,我希望通过在item_title包含分析器的字段上指定映射来完成此操作,该分析器对每个单词的词干版本进行索引,但我似乎无法找到有关如何执行此操作的文档,表明它是以不同的方式完成的.

建议?

search elasticsearch stem

8
推荐指数
1
解决办法
2105
查看次数

什么是python的_random?

如果你打开random.py它看它是如何工作的,它的类Random子类_random.Random:

import _random

class Random(_random.Random):
    """Random number generator base class used by bound module functions.

    Used to instantiate instances of Random to get generators that don't
    share state.  Especially useful for multi-threaded programs, creating
    a different instance of Random for each thread, and using the jumpahead()
    method to ensure that the generated sequences seen by each thread don't
    overlap.

    Class Random can also be subclassed if you want to use a different basic
    generator …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

8
推荐指数
1
解决办法
1462
查看次数

内核模块mokutil:无法注册新密钥

我想签一些内核模块(VirtualBox的)的解释在这里

如此处所述,我创建了新密钥:

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
Run Code Online (Sandbox Code Playgroud)

我签署了所有模块:

sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetadp)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxpci)
Run Code Online (Sandbox Code Playgroud)

但是,在导入密钥时,失败了

$ sudo mokutil --import MOK.der
input password: 
input password again: 
Failed to enroll new keys
Run Code Online (Sandbox Code Playgroud)

是什么原因造成的?

编辑:实际上,我只是注意到我真的不能对mokutil做太多事情。例如:

$ sudo mokutil …
Run Code Online (Sandbox Code Playgroud)

kernel-module

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

Nginx记录到access.log.1而不是access.log

我知道之前已经问过,但我认为这是一个不同的问题.

Nginx运行于www-data:

$ ps -eo "%U %G %a" | grep nginx
root     root     nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data www-data nginx: worker process
Run Code Online (Sandbox Code Playgroud)

/var/log/nginx/* 拥有正确的权限:

$ ls -lah /var/log/nginx/
total 291M
drwxr-x---  2 www-data adm     4.0K Jul 25 06:25 .
drwxrwxr-x 14 root     syslog  4.0K Aug 28 06:25 ..
-rw-r-----  1 www-data adm      12K Aug 28 19:03 access.log
-rw-r-----  1 www-data adm     250M Aug 28 18:50 access.log.1
Run Code Online (Sandbox Code Playgroud)

Logrotate使用正确的权限创建日志文件:

/var/log/nginx/*.log {
        ( ... )
        create …
Run Code Online (Sandbox Code Playgroud)

logging logrotate nginx

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

Git:解开一个未知的错误

我有一些非常混乱的git回购,我想得到一些直接的东西.

在我的本地机器,bitbucket以及除一台生产机器之外的所有机器中,我都有以下历史记录:

(本地和bitbucket)

* 1a84374 (HEAD, master) message
* 
* 
|\
| *
| *
* |
* | ea2d82c message
|/
* ccd87f7 message
*
*
Run Code Online (Sandbox Code Playgroud)

现在最近出现了一个问题,我不得不ssh到我的一台生产机器上并快速编写代码.想象一下非常时间关键的东西.我想因为我很仓促,我一定在那个回购中打破了一些东西.我记得做了一些改变,我猜这是错误的地方.无论如何,我将新代码保存到新分支中.在这台生产机器中,历史现在突然变得如此

* db19412 (HEAD, quickfix) message
*  57f8865 (origin/master, master) Merge branch 'master' of https://bitbucket.org etc etc
|\
| * 1a84374 message
| * 
| * 
| |\
| | *
| | *
| * |
| * | ea2d82c message
| |/
* |  39052e5 Merge branch 'master' of https://bitbucket.org etc …
Run Code Online (Sandbox Code Playgroud)

git

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

为什么这两个Julia代码的表现如此不同?

function c1()
        x::UInt64 = 0
        while x<= (10^8 * 10)
                x+=1
        end
end

function c2()
        x::UInt64 = 0
        while x<= (10^9)
                x+=1
        end
end

function c3()
        x::UInt64 = 0
        y::UInt64 = 10^8 * 10
        while x<= y
                x+=1
        end
end

function c4()
        x::UInt64 = 0
        y::UInt64 = 10^9
        while x<= y
                x+=1
        end
end
Run Code Online (Sandbox Code Playgroud)

应该是一样的吧?

@time c1()

0.019102 seconds (40.99 k allocations: 2.313 MiB)

@time c1()

0.000003 seconds (4 allocations: 160 bytes)

@time c2()

9.205925 seconds (47.89 k allocations: 2.750 …
Run Code Online (Sandbox Code Playgroud)

julia

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

用python打开的Gifs已经破帧了

有时,当打开GIF并将单独的帧保存到文件时,框架的形状会很糟糕.所有的GIF都不会发生这种情况,但是在许多帧中会发生这种情况.

这是原来的GIF

http://imgur.com/XMxW3m3

这是第一帧(好了)

http://imgur.com/xv43alb

这是第二帧(拧出来的)

http://imgur.com/hG4VxzL

我用两个不同的python模块尝试了同样的事情.第一个PIL

from PIL import Image

img = Image.open('pigs.gif')

counter = 0
collection = []
while True:
    try:
        img.save('original%d.gif' % counter)
        img.seek(img.tell()+1)
        counter += 1
    except EOFError:
        break
Run Code Online (Sandbox Code Playgroud)

然后魔杖:

from wand.image import Image

img = Image(filename='pigs.gif')

for i in range(len(img.sequence)):
    img2 = Image(img.sequence[i])
    img2.save(filename='original%d.gif' % i)
Run Code Online (Sandbox Code Playgroud)

两个模块也是如此.

这是怎么回事?

PS:我发现其他人有相同的症状.然而,这些解决方案(两者都围绕PIL的错误,当你执行.seek()时删除调色板)并没有解决我的问题: Python:将GIF帧转换为PNGPIL - 将GIF帧转换为JPG

python gif

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

为什么这个python赋值不像预期的那样工作?

这将返回您的期望:

class My(object):
    def __len__(self):
        return 6

a = My()
print(len(a))
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

class My2(object):
    pass

b = My2()
b.__len__ = lambda x: 6
print(len(b))
Run Code Online (Sandbox Code Playgroud)

TypeError: object of type 'My2' has no len()

为什么?

python-3.x

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