找不到芹菜日志文件



我正在尝试查看日志或打印命令是否在我的任务中工作。

当我运行以下命令时:

芹菜 -

一个机器人芹菜.芹菜工人 -f -l 信息

告诉我我的任务开始和完成,但我不知道它是否真的运行了里面的代码。

请帮我弄清楚我一直在读的这个"日志"文件在哪里。

from __future__ import absolute_import
import time
import json
import logging
from channels.layers import get_channel_layer
from robobud.celery import app
from .models import Program

log = logging.getLogger(__name__)
@app.task
async def pump(program_id, amount1, amount2):
    # time sleep represent some long running process
    time.sleep(3)
    # Change task status to completed
    #program = Program.objects.get(pk=program_id)
    log.debug("Running progam_name=%s", program.name, amount1, amount2)
    #program.status = "completed"
    #program.save()
    print("pumping")
    print(program_id, amount1, amount2)
    #Chatroom name
    chat_room = "program" + str(program_id)
    print(chat_room)
    channel_layer = get_channel_layer()
    #Create Dictionary
    taskResponse = {
            "action": "completed",
            "program_id": program.id,
            "program_name": program.name,
            "program_status": program.status,
        }
    # Broadcasts the message to be sent
    await channel_layer.group_send(
        chat_room,
        {
            "type": "task_message",
            "text": json.dumps(taskResponse)
        }
    )
    @database_sync_to_async #Critical when pulling data from data using async
    def set_program_status(self, program_id):
        program = Program.objects.get(id=program_id)
        program.status = "Completed"  # change field
        program.save() # this will update only
    # Send status update back to browser client
    #if program_name is not None:
    #    Channel(reply_channel).send({
    #        "text": json.dumps ({
    #            "action": "completed",
    #            "program_id": program.id,
    #            "program_name": program.name,
    #            "program_status": program.status,
    #        })
    #    })
我不确定芹菜与 asyncio 的

配合效果如何,因为芹菜是多处理的,而 asyncio 是关于单进程的,但这里有一个简单的任务,将向您展示如何将日志记录与芹菜一起使用:


    from celery.utils.log import get_task_logger
    from robobud.celery import app

    log = get_task_logger(__name__)
    @app.task
    def logging_task(name):
        log.info('hello %s', name)

快速说明一下,你开始芹菜的方式看起来不对。 您可以使用以下语法登录到 stderr:

celery worker -A robobud.celery worker -l info

但是,此命令仅记录在 info 或更高位置记录的那些消息(即,不调试)。 如果要将芹菜输出放入日志文件中,可以使用-f--logfile开关指定文件的位置,例如:

celery -A robobud.celery worker -f /var/log/celery/%h-%I.log -l info

相关内容

  • 没有找到相关文章

最新更新