Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 芹菜汁_Python_Celery - Fatal编程技术网

Python 芹菜汁

Python 芹菜汁,python,celery,Python,Celery,我有一个简单的芹菜任务,如下所示: @celery.task def tail(): cmd = 'nslookup www.google.com' cm = shlex.split(cmd) out = subprocess.check_output(cm) print out 当工作人员执行任务时,输出如下内容: [2013-12-02 23:54:26,007: WARNING/Worker-2] Server: 192.168.1

我有一个简单的芹菜任务,如下所示:

@celery.task
   def tail():
   cmd = 'nslookup www.google.com'
   cm = shlex.split(cmd)
   out = subprocess.check_output(cm)
   print out
当工作人员执行任务时,输出如下内容:

[2013-12-02 23:54:26,007: WARNING/Worker-2] 
Server:             192.168.1.254
Address:        192.168.1.254#53
Non-authoritative answer:
Name:   www.google.com
Address: 173.194.34.112
Name:   www.google.com
Address: 173.194.34.113
Name:   www.google.com
Address: 173.194.34.115
Name:   www.google.com
Address: 173.194.34.114
Name:   www.google.com
Address: 173.194.34.116
[2013-12-02 23:54:26,008: INFO/MainProcess] Task app.tail[23f625f7-d328-47c5-8f57-    90a330ebe100] succeeded in 0.0618259499897s: None
我需要芹菜任务来捕获每一行的标准输出,这样我就可以重定向它并将它存储到其他地方

我可以在芹菜文档中看到定义记录器和重定向标准输出的选项,但是我不知道如何连接它

建议将不胜感激


注意。

这实际上与芹菜无关,如果您希望在捕获输出的同时执行命令,则应以不同的方式执行

请看一下子流程模块:

特别是关于捕获
stderr
的部分,因为它没有写入
stdout
:)


嗯-我认为这个“将_stdouts_重定向到_logger(logger,loglevel=None,stdout=True,stderr=True)[source]将sys.stdout和sys.stderr重定向到一个日志实例”应该可以做到这一点。这篇文章也回避了这样一个事实:它是可以做到的,它是可以做到的,但它绝对不是最好的方式。很有可能您会意外地从其他进程捕获额外的输出。那么我可以只捕获芹菜日志条目吗?嗯。。。理论上,如果您创建自己的日志处理程序,则可以捕获芹菜日志条目。但是很难可靠地工作,因为多个线程/事件可以登录到同一个loghandler.Hmm-那么实现这一点的最佳方法是什么?我所需要的只是将一些日志事件捕获到一个单独的数据库中。
import celery
import subprocess

@celery.task
def tail():
    process = subprocess.Popen('nslookup www.google.com', shell=True, stdout=PIPE, stderr=PIPE)
    print 'Stdout: ', process.stdout
    print 'Stderr: ', process.stderr