小编JDi*_*teo的帖子

防止重复芹菜伐木

如何在这样的应用程序中防止重复的芹菜日志?

# test.py
from celery import Celery

import logging

app = Celery('tasks', broker='redis://localhost:6379/0')
app.logger = logging.getLogger("new_logger")
file_handler = logging.handlers.RotatingFileHandler("app.log", maxBytes=1024*1024, backupCount=1)
file_handler.setFormatter(logging.Formatter('custom_format %(message)s'))
app.logger.addHandler(file_handler)

@app.task
def foo(x, y):
    app.logger.info("log info from foo")
Run Code Online (Sandbox Code Playgroud)

我启动应用程序: celery -A test worker --loglevel=info --logfile celery.log

然后我让foo运行 python -c "from test import foo; print foo.delay(4, 4)"

这导致"和foo中的日志信息"显示在celery.logapp.log.

这是app.log内容:

custom_format log info from foo
Run Code Online (Sandbox Code Playgroud)

这里是celery.log内容:

[2017-07-26 21:17:24,962: INFO/MainProcess] Connected to redis://localhost:6379/0
[2017-07-26 21:17:24,967: INFO/MainProcess] mingle: searching for neighbors
[2017-07-26 21:17:25,979: INFO/MainProcess] mingle: all …
Run Code Online (Sandbox Code Playgroud)

python logging celery

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

virtualenv 使用升级后的系统默认 pip

如何让我的虚拟环境使用系统升级后的 pip?
在创建 virtualenv 之前,pip 显示版本 9.0.1,但在虚拟环境中它会恢复到 8.1.1,迫使我升级所有 virtualenv pip。

$ pip --version
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip --version
pip 8.1.1 from /tmp/venv/lib/python3.5/site-packages (python 3.5)
(venv) $ pip install --upgrade pip
(venv) $ pip --version
pip 9.0.1 from /tmp/venv/lib/python3.5/site-packages (python 3.5)
Run Code Online (Sandbox Code Playgroud)

python pip virtualenv python-3.x

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

为什么.NET System.IO.File使用Create/Open而不是构造函数?

System.IO.File没有构造函数.而是使用Create/Open静态方法.

为什么不使用构造函数创建或打开文件?

调用一个构造函数是否有些暗示调用构造函数的代码"拥有"该对象,而对于一个文件,其中对象只包含文件系统所拥有的文件的句柄?这是一些OOP约定,.NET/C#约定,还是纯粹是任意的?

.net c# oop

3
推荐指数
2
解决办法
471
查看次数

System.Reflection.BindingFlags.Instance与C#访问修改器的对应关系

如何在System.Reflection.BindingFlags公开,非公开和实例对应于C#访问修饰符

以下对应表是否正确?

+-------------+--------+---------+-----------+----------+--------------------+
| BindingFlag | Public | Private | Protected | Internal | Protected Internal |
+-------------+--------+---------+-----------+----------+--------------------+
| Instance    | No     | No      | No        | Yes      | Yes                |
| NonPublic   | No     | Yes     | Yes       | No       | No                 |
| Public      | Yes    | No      | No        | No       | No                 |
| *           | Yes    | Yes     | Yes       | Yes      | Yes                |
+-------------+--------+---------+-----------+----------+--------------------+

* Instance | NonPublic | …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

如何更改 git-crypt 密钥

我使用git-crypt分叉了一个 repo,我需要更新 git-crypt 密钥,以便上游 git-crypt 密钥无法解密新的 repo。

git-crypt help文档和README似乎没有解释如何改变一个git-加密密钥。

我尝试了各种擦除 git-crypt 配置并重新初始化的方法。不幸的是,所有这样做的尝试似乎都破坏了各种事情,例如 git diff 显示诸如smudge filter git-crypt failed. 其中一些行为记录在在已初始化的存储库运行git-crypt init会使数据不可读https://github.com/AGWA/git-crypt/issues/47评论中的任何建议都无法防止 git diff 致命错误。(我对 git diff 显示未加密的二进制文件历史记录的无用输出感到满意,但在某些提交中给出致命错误是不行的,即使是未加密的文件也无法进行差异git diff。)

这似乎是 git-crypt 的一个主要要求,所以我不敢相信这不受支持,例如,如果您因为有人离开公司而需要轮换 git-crypt 密钥。

git git-crypt

3
推荐指数
2
解决办法
3739
查看次数

具有许多C++ Interop调用的自动C#垃圾收集器性能较差

什么可能导致C#垃圾收集失败如此悲惨地在我的C#应用​​程序执行大量的C++调用时放置好GC.Collect解决问题?我的C#应用​​程序,使数以百万计的C++调用使用System.Runtime.InteropServices的DllImport和CallingConvention.Cdecl,并有一些C#析构函数释放一些C++非托管内存.我正在使用.NET Framework 4.

  1. 什么可能导致我的应用程序中的下面的代码强制进行分页,从而减慢执行到爬行(在我的32 GB系统上消耗29GB的RAM并且在我终止进程之前花费超过4分钟),同时仅更改ManualGCtrue大写的内存使用量大约600MB,执行在29秒内完成?

  2. 为什么离开ManualGC false并改变Writetrue约12 GB封顶内存使用和允许执行在约59秒内完成,而不分页?

我的应用程序中的一些代码片段(显然有些名称已更改):

private static int callCount = 0;
private const bool ManualGC = false;
private const bool Write    = false;

internal static void CommonlyCalled()
{
    ++callCount;

    if ( callCount % 100000 == 0)
    {
        if (ManualGC)
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
        if (Write) Console.WriteLine(HandleErrorsCallCount);
    }

    DoLogic();
}
Run Code Online (Sandbox Code Playgroud)

使用Windows任务管理器中的"内存(专用工作集)"列测量内存.行为始终是可重复的.

.net c# c++ interop garbage-collection

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

标签 统计

.net ×3

c# ×3

python ×2

c++ ×1

celery ×1

garbage-collection ×1

git ×1

git-crypt ×1

interop ×1

logging ×1

oop ×1

pip ×1

python-3.x ×1

virtualenv ×1