<div dir="ltr"><div><br></div><div style>Hello,</div><div style><br></div><div style>First of all, thank you for a great metrics collection framework!</div><div style><br></div><div style>I am using collectd 4.10.1 on Ubuntu 12.04</div>

<div style><br></div><div style>I hope this is the right forum to ask a question about the python plugin.</div><div style>We are writing a custom plugin that will read some internal stats from within several web-workers running on the local machine. </div>

<div style><br></div><div style>Looking at documentation, there is an explicit warning that the python plugins must be thread safe. Also, </div><div style>several plugins written in python (one being collectd-carbon) explicitly use a threading.Lock() to do some operations.</div>

<div style><br></div><div style>Looking at logs, for read-only plugins, it seems that only one thread is calling the read callback at a time. (Even with multiple read-threads and explicit sleep in read callback longer than the interval)</div>

<div style><br></div><div style>So my 2 questions are:</div><div style><br></div><div style>In practice, only write plugins need proper locking and I can still count on the GIL in all cases?</div><div style>(Meaning, only complex non atomic operations need to be synchronized)</div>

<div style><br></div><div style>And finally, the python module seems to be imported twice? </div><div style>(At first I thought it once per read-thread, because i had 2, but it is regardless of threads)</div><div style>The module is loaded twice, the configure callback is called twice, BUT the initialize-callback is called only once.  Why is it behaving this way?</div>

<div><br></div><div style>Configuration: </div><div style><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<font face="courier new, monospace">LoadPlugin python<br></font><font face="courier new, monospace"><Plugin python><br></font><font face="courier new, monospace">  ModulePath "/home/coco/tmp"<br></font><font face="courier new, monospace">  LogTraces true<br>

</font><font face="courier new, monospace">  Interactive false<br></font><font face="courier new, monospace">  Import cherrypy_plugin<br></font><font face="courier new, monospace">  <Module cherrypy_plugin><br></font><font face="courier new, monospace">    Hello "These" "are" "the" "inputs"<br>

</font><font face="courier new, monospace">  </Module><br></font><font face="courier new, monospace"></Plugin></font></blockquote><div><br></div><div style>Log output:</div><div style><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Loading cherrypy plugin<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Loaded cherrypy plugin<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Instance of cherrypy plugin created <cherrypy_plugin.CherryPyCollector object at 0xb607b22c><br>

</font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Configuring cherrypy plugin<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Configuration Hello: ('These', 'are', 'the', 'inputs')<br>

</font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Loading cherrypy plugin<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Loaded cherrypy plugin<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Instance of cherrypy plugin created <cherrypy_plugin.CherryPyCollector object at 0xb61d71cc><br>

</font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Configuring cherrypy plugin<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Configuration Hello: ('These', 'are', 'the', 'inputs')<br>

</font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Initializing cherrypy plugin<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Threading module: 3055395796<br>

</font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Instance of cherrypy plugin initialized <cherrypy_plugin.CherryPyCollector object at 0xb61d71cc><br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Initialization complete, entering read-loop.<br>

</font><font face="courier new, monospace" size="1">[2012-12-20 11:49:34] [info] Read invoked on cherrypy plugin <cherrypy_plugin.CherryPyCollector object at 0xb61d71cc> on thread Dummy-1<br></font><font face="courier new, monospace" size="1">[2012-12-20 11:49:36] [info] Read invoked on cherrypy plugin <cherrypy_plugin.CherryPyCollector object at 0xb61d71cc> on thread Dummy-1<br>

</font><font face="courier new, monospace" size="1">[2012-12-20 11:49:37] [info] Read invoked on cherrypy plugin <cherrypy_plugin.CherryPyCollector object at 0xb61d71cc> on thread Dummy-1</font></blockquote><div><br>

</div></div><div><br></div></div><div><br></div><div style>Thanks in advance,</div><br clear="all"><div style>/JT@Virtusize</div><div><div style="color:rgb(80,0,80);font-family:Helvetica;font-size:medium;word-wrap:break-word">

<span style="text-align:-webkit-auto;border-collapse:separate"><div style="word-wrap:break-word"><span style="font-family:arial;font-size:small"><div style="font-size:13px"></div></span></div></span></div></div>
</div>