小编Jon*_*hop的帖子

如何在Django日志文件中记录Python警告?

我有一个从v1.8迁移到v1.10的Django应用程序。在执行此工作的过程中,我通过以下方式运行了我的应用程序:

python -Wall manage.py runserver

这样做会使控制台中出现许多Python警告。我想在我的Django应用程序日志中显示这些警告,以便稍后进行检查。我以为我的应用程序的日志处理程序会捕获这些警告,但事实并非如此。日志处理程序如下所示(取自settings.py):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt': "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': 'myapp.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'propagate': True,
            'level': 'WARNING',
        },
        'myapp': {
            'handlers': ['file'],
            'level': 'WARNING',
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

如何捕获-WallDjango日志中的Python警告(带有)以供以后检查?

python django

6
推荐指数
1
解决办法
738
查看次数

如何测试未签名的Firefox扩展?

Firefox 43现在强制执行加载项签名.我不明白在扩展签名之前,如何在这些版本的Firefox中测试和调试扩展.

如果我正在编写新扩展,我该如何在最新版本的Firefox中测试未签名版本?是否有明确的方法来禁用开发人员的签名强制执行?

firefox firefox-addon

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

如何异步运行 Django 管理命令?

我有一个 Django 管理命令,我想以异步方式(通过call_command函数)发出它。我的代码流程类似于:

  1. 用户填写网络表单(或编辑表单中预先存在的值)。
  2. 用户点击提交按钮,我做一些处理。
  3. 处理完成后,我想发出一个管理命令,而不强迫用户等待它返回

如果管理命令由于某种原因失败,我不会太担心(我的日志会记录这些情况),因此允许用户继续他们的快乐方式对我来说很好。

这种异步调用是否可行,如果可以,我该怎么做?threading对于这种情况,图书馆是否足够?我知道像Celery这样的软件包,但是对于像我想要做的那样简单的事情,使用类似的东西似乎是巨大的矫枉过正。

python django asynchronous

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

require_once 在 require_once 内部创建路径问题

我有这个条件:

  • 一个文件:/public_html/folderX/test.php有一行:require_once '../functions/sendemail.php'
  • 另一方面,/public_html/functions/sendemail.php有一行:require_once '../config.php'

config.php 在这种情况下完美加载。

当我尝试将其添加到functions/sendemail.php不在 folderX 中的文件上时会出现问题,例如:

当我尝试添加时require_once 'functions/sendemail.php'public_html/test.php收到此错误消息:

警告:require_once(../config-min.php) [function.require-once]:无法打开流:public_html/test.php 中没有这样的文件或目录

如何使require_once '../config.php'内部functions/sendemail.php“独立”工作,因此无论它包含在任何文件中的任何地方,都不会再出现“require_once”问题。

我尝试更改为“include_once”,但仍然无效。

谢谢!

php

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

为什么 PS1 中的换行符会在 Git for Windows bash 中引发语法错误?

我正在尝试在Git for Windows Bash 提示中设置我的用户提示。这是一个有效的(非常简单的)提示:

# \@                 Prints the time: 11:14 AM
# \w                 Prints the full cwd path
# $(__git_ps1 ...)   Prints the current git branch

PS1='\n[\@] \w $(__git_ps1 "(%s)") \$ '
Run Code Online (Sandbox Code Playgroud)

一旦我在混合中添加第二个换行符,我就会收到以下错误:

 bash: command substitution: line 1: syntax error near unexpected token ')'
 bash: command substitution: line 1: `__git_ps1 "(%s)")'
Run Code Online (Sandbox Code Playgroud)

引发此错误的提示的变体是(注意$提示前的换行符):

PS1='\n[\@] \w $(__git_ps1 "(%s)") \n\$ '
Run Code Online (Sandbox Code Playgroud)

__git_ps1认为导致此问题发生的例程一定存在问题,但我真的不明白。这里有什么简单的东西我错过了吗?

windows git bash

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

将线程安全性添加到简单的日志记录功能?

从我读到的,标准输出流通常不是线程安全的.我有一个C++应用程序(基于Windows,使用Visual Studio 2005)具有非常简单的日志记录功能:

void logText(string text)
{
    if(g_OutputLogEnabled && g_OutputLog.is_open())
    {
        string logDate = getDateStamp("%Y-%m-%d %H:%M:%S");
        g_OutputLog << "[" << logDate << "]: " << text << endl;
    }

    cout << text << endl; // Also echo on stdout
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,g_OutputLog是一个ofstream并且g_OutputLogEnabled是一个布尔值.

我一直在我的主应用程序中使用这个小函数没有问题,但我现在想将其用途扩展到一些子线程.这些线程在工作完成后可以工作并异步打印数据.

问题:如何在此例程中添加简单的行级线程安全性?所有我真正关心的是,我的日志中的每一行都保持不变.在这种情况下,性能不是问题,但(一如既往)更快更好.

我知道我可以使用第三方日志包,但我想自己做,所以我可以学习它是如何工作的.我的多线程知识不应该是它应该是什么,我正在努力改进它.

我听过关键部分一词,我有点意识到互斥锁和信号量,但在这种情况下我会使用哪些?有一个干净,简单的解决方案吗?提前感谢任何建议.

c++ windows multithreading iostream thread-safety

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

为什么 \\.平等的.在preg_replace?

在对这个奇妙问题最高投票答案中,在调用中使用以下正则表达式(来自答案的函数):preg_replaceauto_version

'{\\.([^./]+)$}'
Run Code Online (Sandbox Code Playgroud)

此正则表达式的最终目标是从给定文件名中提取文件的扩展名.但是,我很困惑为什么这个正则表达式的开头有效.即:

为什么\\.匹配与\.正则表达式相同?

前者不应该匹配(a)一个字面反斜杠,其次是(b)任何字符,而第二个匹配一个字面时间吗?单引号字符串的规则表明\\产生文字反斜杠.

考虑这个简单的例子:

$regex1 = '{\.([^./]+)$}';  // Variant 1 (one backslash)
$regex2 = '{\\.([^./]+)$}'; // Variant 2 (two backslashes)

$subject1 = '/css/foobar.css';   // Regular path
$subject2 = '/css/foobar\\.css'; // Literal backslash before period

echo "<pre>\n";
echo "Subject 1: $subject1\n";
echo "Subject 2: $subject2\n\n";

echo "Regex 1: $regex1\n";
echo "Regex 2: $regex2\n\n";

// Test Variant 1
echo preg_replace($regex1, "-test.\$1", $subject1) . "\n";
echo preg_replace($regex1, …
Run Code Online (Sandbox Code Playgroud)

php regex

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

PHP - 很难理解为什么某个值会被回显.赋值是否可以在if内部执行并在else中执行?

Hy给大家!请原谅我的无知,我是php的新手.

我很难理解为什么php代码会以这种方式运行.代码正在运行,但我对于为什么回显这些值非常无能为力.

(代码已经过简化以便解释,但它通常会根据自定义的列数填充和格式化表格)

问题***(见代码)

为什么变量$cell回波(参见:???????问题?????):1 2 3 4 5 6 7?我期待0 1 2 3 4 5 6 //因为我认为它的起点是$ cell = 0,正如在开始时分配的那样.唯一合理的理由是它从$ cell + = $ i(来自for循环)继承了它的值,但是当大小写为$ col = 2时,第一个语句是不是完全跳过而只执行了else语句?

<?php
for ($i=1; $i <= 7 ; $i++)  {
    $cell = 0;
    echo "<tr>";

    for ($col=1; $col <= 2; $col++) {
        echo "<td>" ;
        if ($col == 1) {
            echo $cell; // echoes: 0 0 0 0 0 0 0 ----> because $cell = 0
            $cell +=$i;
            echo …
Run Code Online (Sandbox Code Playgroud)

php

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

无法使用 CPAN 安装/升级软件包

我尝试使用 CPAN 安装一些模块,但每个模块都出现以下错误。

CPAN installation problem " Package contains both files[bignum-0.30.tar] and directories[bignum-0.30]; not recognized as a perl package, giving up, won't make".
Untarred RRD-Simple-1.44.tar successfully
Package contains both files[RRD-Simple-1.44.tar] and directories[RRD-Simple-1.44]; not recognized as a perl package, giving up
  Package contains both files[RRD-Simple-1.44.tar] and directories[RRD-Simple-1.44]; not recognized as a perl package, giving up, won't make
Running Untarred RRD-Simple-1.44.tar successfully
Package contains both files[RRD-Simple-1.44.tar] and directories[RRD-Simple-1.44]; not recognized as a perl package, giving up
  Package contains both files[RRD-Simple-1.44.tar] and directories[RRD-Simple-1.44]; …
Run Code Online (Sandbox Code Playgroud)

perl cpan

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

为什么这个正则表达式取代破折号字符?

我试图更好地理解正则表达式,但似乎无法理解这一点.

preg_replace("/[^a-zA-Z0-9.?!\s]/", "", $mystring);
Run Code Online (Sandbox Code Playgroud)

我认为这不会取代短划线,因为在上面的例子中它将被视为"通过".但每次我运行它时,短划线都会被删除.

php regex preg-replace preg-match

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

为什么在读取 UTF-8 文件时 BOM 会一直存在?

我正在尝试在 Perl 中读取一些 UTF-8 编码的 CSV 文件(至少我相信它们就是这样),并将它们全部写入一个更大的文件中。这是我的脚本:

#!/usr/bin/perl
use strict;
use warnings;

open my $out, '>:encoding(UTF-8)', "output.csv" or die "Cannot open output.csv: $!";

my @files = <*.csv>;
foreach(@files) {
    next if $_ =~ m/^output.csv$/;

    print "Parsing $_\n";

    open my $in, '<:encoding(UTF-8)', $_ or die "Cannot open $_: $!";
    while(<$in>) {
        chomp;
        next if m/^\s*$/;
        print $out "$_\n";
    }
    close $in;
}
close $out;
Run Code Online (Sandbox Code Playgroud)

总而言之,每个文件的内容都以BOM开头,这意味着 BOM 显示为每个文件数据的前三个字节。不应该使用>:encoding(UTF-8)指令打开文件已经摆脱了 BOM 吗?为什么它继续出现在我的输出中?

perl encoding utf-8

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

在perl中,我如何获取散列的值,其散列名称存储在字符串中?

我试图读取散列的值,其名称和索引存储在一个字符串中.我只能获得值,如果我硬编码哈希及其索引,但不是如果我从另一个变量.为了更好地描述它,我已经提到了以下代码:

    use strict 'vars';
    #------------------------------

    # Hash to store some values
    our %SystemUser = (
                Username => "system",
                Password => "system"
    );

    # Prints successfully if i use the below technique
    print "Using Hard-Coding technique : ${SystemUser{'Password'}}\n";

    my $Reference = "SystemUser{'Password'}";

    # Doesn't print if i use this technique where $Reference contains the hash-index pair 
    print "Using Referencing technique : ${$Reference}\n";

    print "Reference value : $Reference\n";
Run Code Online (Sandbox Code Playgroud)

我想打印的值SystemUser{'Password'}使用${$Reference}(其$Reference = "SystemUser{'Password'}"值)

perl hash reference

0
推荐指数
1
解决办法
130
查看次数

在perl中创建输出文件后删除空格的问题

我编写了一个脚本,将输出保存在Perl脚本中,但由于某种原因,它会将空格留在每行的末尾.我尝试使用Perl正则表达式,但它不起作用.有人可以看看我的代码,让我知道我做错了什么?

我的代码

 open FILE, ">", "finaloutput.txt" || die "cannot create";
 my @output = ``; # (here i am using back ticks to run third party command)
 foreach  my $output (@output) {
     chomp $output;
     my $remove_whitespace = $output;
     $remove_whitespace =~ s/^\s+|\s+$//g;
     print  FILE "$remove_whitespace  \n";
 }
 close FILE;
Run Code Online (Sandbox Code Playgroud)

即使这样做,它也会在输出的每一行的末尾留下一个空白区域.请指导我.

谢谢.

perl

-1
推荐指数
1
解决办法
319
查看次数