相关疑难解决方法(0)

将所有celery任务的日志消息发送到单个文件

我想知道如何设置更具体的日志系统.我的所有任务都使用

logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

作为模块范围的记录器.

我希望celery登录到"celeryd.log"并将我的任务记录到"tasks.log",但我不知道如何让它工作.使用CELERYD_LOG_FILE来自django-celery我可以将所有与celeryd相关的日志消息路由到celeryd.log,但是没有在我的任务中创建的日志消息的跟踪.

python logging celery

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

Python芹菜 - 忽略loglevel INFO的工人

我正在使用以下命令:

芹菜工人-l info -A django_app --concurrency = 10 --autoreload

但DEBUG日志仍在倾泻,同样适用于使用-l warning--logfile

在此输入图像描述


知道为什么Celery会忽略日志设置吗?


更多详情:

日志来自Pythonsuds,使用DEBUG输出到记录器.

python django logging celery django-celery

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

celery.utils.log中的get logger函数与日志记录有什么不同?

我一直试图弄清楚python记录器和芹菜记录器之间的区别,特别是下面命令之间的区别,但找不到一个好的答案.

我正在使用芹菜v3,django 1.10.

from celery.utils.log import get_task_logger
logger = get_logger(__name__)
...
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
...
import logging
logger = logging.get_logger(__name__)
Run Code Online (Sandbox Code Playgroud)

芹菜文档(最新版本,v3.1)在这个主题上非常缺乏.我已经看过了诸如类似的问题这一个,但它仍然是它不清楚使用哪个,为什么要使用那一个,然后将区别具体是什么.我正在寻找一个清晰,简洁的答案.

我也在我的生产环境中使用哨兵.这种选择如何影响您的哨兵日志?即这些常见的设置

python django logging celery

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

不能对保存的表单使用 celery 延迟:对象不是 JSON 可序列化的

使用 Django 1.8,我想在视图中保存表单后触发延迟的 celery 函数

def new_topic(request, forum_id):
    form = TopicForm()
    uid = request.user.id
    if request.method == 'POST':
        tform = TopicForm(request.POST)
        if tform.is_valid():
            topic = tform.save(commit=False)
            topic.title = clean_title(tform.cleaned_data['title'])
            topic.description = clean_desc(tform.cleaned_data['description'])
            topic.save()
            notify_new_topic.delay( uid, topic) #<--problem here
            #rest of the views
Run Code Online (Sandbox Code Playgroud)

但我得到

EncodeError at /add/topic/
<Topic: Topic object> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

如果我delay从 celery 任务中删除,我不会收到任何错误。

任务是:

@shared_task
def notify_new_topic(flwd_id, topic):
    title = topic.title
    link = topic.slug

    flwd= cached_user(flwd_id) #User.objects.get(id = flwd_id)
    print 'flwd is', flwd.username
    flwr_ids …
Run Code Online (Sandbox Code Playgroud)

django django-celery

8
推荐指数
2
解决办法
7116
查看次数

跑步时看不到我的芹菜原木

我通过supervisord开始芹菜,请参阅下面的条目.

[program:celery]
user = foobar
autostart = true
autorestart = true
directory = /opt/src/slicephone/cloud
command = /opt/virtenvs/django_slice/bin/celery beat --app=cloud -l DEBUG -s /home/foobar/run/celerybeat-schedule --pidfile=/home/foobar/run/celerybeat.pid
priority = 100
stdout_logfile_backups = 0
stderr_logfile_backups = 0
stdout_logfile_maxbytes = 10MB
stderr_logfile_maxbytes = 10MB
stdout_logfile = /opt/logs/celery.stdout.log
stderr_logfile = /opt/logs/celery.stderr.log
Run Code Online (Sandbox Code Playgroud)

pip冻结| grep芹菜

celery==3.1.0
Run Code Online (Sandbox Code Playgroud)

但任何用法:

@celery.task
def test_rabbit_running():
    import logging
    from celery.utils.log import get_task_logger
    logger = get_task_logger(__name__)
    logger.setLevel(logging.DEBUG)
    logger.info("foobar")
Run Code Online (Sandbox Code Playgroud)

没有出现在日志中.相反,我得到如下条目.

celery.stdout.log

celery beat v3.1.0 (Cipater) is starting.
__    -    ... __   -        _
Configuration ->
    . …
Run Code Online (Sandbox Code Playgroud)

python logging celery supervisord

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

如何禁用 celery 任务结果记录?

我有正在运行的 Celery 3.1 应用程序,它记录了一些敏感信息。理想情况下,我希望有相同的日志,但没有结果部分。

目前它看起来像:

worker_1 | [2019-12-10 13:46:40,052: INFO/MainProcess] Task xxxxx succeeded in 13.19569299298746s: yyyyyyy
Run Code Online (Sandbox Code Playgroud)

我想拥有:

worker_1 | [2019-12-10 13:46:40,052: INFO/MainProcess] Task xxxxx succeeded in 13.19569299298746s
Run Code Online (Sandbox Code Playgroud)

怎么做?

编辑:看来这可以完成这项工作:https://docs.celeryproject.org/en/3.1/reference/celery.worker.job.html#celery.worker.job.Request.success_msg但我不知道如何来实际使用它。

celery celery-task django-celery

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