tsdb import 相关

今天一直在做opentsdb 大量导入数据的工作。 中间遇到了一些值得记录的问题, 这里随手记一下 明天好好整理

1. 多进程logger

python的logging模块不支持多进程,但我们可以用syslog模块 把进程写给linux/unix的syslog服务。

syslog 有local 0 - 7 8个通道。 把一个通道配置到你的日志文件 然后写入即可

 

2. 多进程

apply_async 这个函数有点奇怪。下面的代码df如果是string就可以。如果不是string, 那么子进程好像不会运行。。

#!/usr/bin/python
__author__ = 'mingwli'
import syslog
import multiprocessing
from multiprocessing import Pool
import pydevd

syslog.openlog('file: %s' % "My file", 0, syslog.LOG_LOCAL0)

def write_log(f):
        syslog.syslog('Log msg: %s' % 'test msg')

pool = Pool(processes=20)
result = []
mylist = range(0, 20)
for df in mylist:
    result.append(pool.apply_async(write_log, (str(df))))

pool.close()
pool.join()
print "all done"

 

posted on 2015-08-26 00:02  kramer  阅读(257)  评论(0编辑  收藏  举报

导航