Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!border2.nntp.ams2.giganews.com!border1.nntp.ams2.giganews.com!border3.nntp.ams.giganews.com!Xbb.tags.giganews.com!border1.nntp.ams.giganews.com!nntp.giganews.com!xlned.com!feeder1.xlned.com!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.012 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'essentially': 0.04; 'exit': 0.07; 'filename:fname piece:py': 0.07; 'subject:help': 0.07; 'spawn': 0.09; 'subject:skip:m 10': 0.09; 'advance': 0.10; 'pep8': 0.16; 'subprocess': 0.16; 'creates': 0.18; 'obviously': 0.18; 'trying': 0.21; 'thanks.': 0.21; 'stephen': 0.22; 'work.': 0.23; 'somebody': 0.23; 'creating': 0.26; 'message- id:@mail.gmail.com': 0.27; "i'm": 0.29; 'helpful': 0.30; 'code': 0.31; 'point': 0.31; 'gets': 0.32; 'anybody': 0.32; 'getting': 0.33; 'strict': 0.33; 'to:addr:python-list': 0.33; "can't": 0.34; 'received:google.com': 0.34; 'done': 0.34; 'thanks': 0.34; 'doing': 0.35; 'sometimes': 0.35; 'received:209.85': 0.35; 'there': 0.35; 'but': 0.36; 'two': 0.37; 'received:209': 0.37; 'some': 0.38; 'to:addr:python.org': 0.39; 'header:Received:5': 0.40; 'help': 0.40; 'here': 0.65; 'life': 0.66; 'content- type:application/octet-stream': 0.67; 'lose': 0.71; 'hoping': 0.72; 'heavy': 0.83; 'spawned': 0.84 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type :x-gm-message-state; bh=1zAak5iLjSkbdIuxp0WeYIBsIj+3fleiYGrExQVrElI=; b=JjPkmNQ0UzCANtht7zeupgKyEH+rWgw1QAFXJoBSgmJfFZVhluSRNs/0gVPtUQ1BEa ohYjhz8pPF1ksOZb4lcn5ZJppYiWjpZf1i9H5/TY19qVpWjIKycEqLXBSQW351Cegbfv QP+3QaHI6mnxj+nTBVqhpUBtzMpuTt36wSKH/oTClMRoNU7UtcKxT2iXtznI4RfPFkgE u9T9jxscMc32F/aXfsqQK0gW/At59UcRPZ64aWPJBfbera/gwW+KKqnd3rCHtus2kdkM ZZl0JaJjYHWZ/djgvdMe3jdKpW42DCn5ehJLMhxxS84F925sMtcaPOVNddv5LMpEI9lr bJaw== MIME-Version: 1.0 From: Stephen Bunn Date: Wed, 7 Nov 2012 09:52:35 +0900 Subject: multiprocessing help To: python-list@python.org Content-Type: multipart/mixed; boundary=bcaec554db0ed991c204cddd24d9 X-Gm-Message-State: ALoCoQlP7MYaBU9IVVr7cKnSOC4UiQbsc/mV5qsw5BCJYhiksb155HdjT3a+NqsY9zMS3GaxcIEj X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 288 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1352249604 news.xs4all.nl 6847 [2001:888:2000:d::a6]:38751 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:32859 --bcaec554db0ed991c204cddd24d9 Content-Type: text/plain; charset=UTF-8 I'm looking for some help with multiprocessing. Essentially what I'm trying to do is the following: 1. create a main process that gets daemonized 2. spawn two subprocess that live for the life of the daemon 3. each subprocess creates children that do heavy work and exit when the work is done I am not having issues with creating the processes but I can't get them to die. Sometimes it works and they all die and sometimes they don't. Obviously I do not understand the multiprocessing documentation so I'm hoping that somebody can point out what I'm doing wrong. I also understand that my code might be strict adherence to PEP8 and there might be a number of flaws with the code; all of which would be helpful to know, but I'm particularly looking for help with getting what I'm trying to do to work. I'm starting to lose my mind.. I just want to say all processes that spawned from here $@%@$% DIE. Thanks in advance for anybody that has some spare time to point me in the right direction. I am grateful. Thanks. Very Respectfully, Stephen Bunn scbunn@sbunn.org --bcaec554db0ed991c204cddd24d9 Content-Type: application/octet-stream; name="sqlimport.py" Content-Disposition: attachment; filename="sqlimport.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h97qf7ul0 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQoiIiINCmZpbGU6IHNxbGltcG9ydA0KYXV0aG9yOiBTdGVw aGVuIEJ1bm4gDQpkZXNjcmlwdGlvbjogZGFlbW9uIHRvIG1vbml0b3IgZGlyZWN0b3JpZXMgZm9y IGNvbXByZXNzZWQgbG9nIGRhdGEgYW5kDQogICAgICAgICAgICAgaW1wb3J0IHRoYXQgaW50byBh IGRhdGFiYXNlDQoiIiINCmltcG9ydCBvcywgc3lzLCB0aW1lLCBsb2dnaW5nLCBsb2dnaW5nLmhh bmRsZXJzLCB0aHJlYWRpbmcNCmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lDQpmcm9tIG9w dHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIsIE9wdGlvbkdyb3VwDQpmcm9tIGRhZW1vbi5tYWlu ZGFlbW9uIGltcG9ydCBNYWluRGFlbW9uDQoNCg0KIyBJbml0aWFsaXplIHRoZSBsb2dnaW5nIHN5 c3RlbQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gDQpkZWYgaW5pdF9sb2dnaW5nKGxvZ2dlcik6DQog ICcnJw0KICBJbml0aWFsaXplIHRoZSBsb2dnaW5nIHN5c3RlbQ0KICAnJycNCiAgIyBzZXQgdGhl IGxvZ2dpbmcgbGV2ZWwNCiAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpDQoNCiAgIyBj cmVhdGUgbG9nZ2luZyBoYW5kbGVycw0KICBjaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpICMg Y29uc29sZSBtZXNzYWdlcw0KICBzaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlcihh ZGRyZXNzPScvZGV2L2xvZycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmYWNpbGl0eT1sb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIuTE9HX0RBRU1PTikgIyBz eXNsb2cgaGFuZGxlcg0KDQogICMgY3JlYXRlIGZvcm1hdHRlcg0KICBjaF9mb3JtYXR0ZXIgPSBs b2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXMgLSAlKG5hbWUpcyAtICUobGV2ZWxuYW1lKXMg LSAlKG1lc3NhZ2UpcycpDQogIHNoX2Zvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKG5h bWUpczogJShtZXNzYWdlKXMnKQ0KDQogICMgYWRkIGZvcm1hdHRlciB0byBjaA0KICBjaC5zZXRG b3JtYXR0ZXIoY2hfZm9ybWF0dGVyKQ0KICBzaC5zZXRGb3JtYXR0ZXIoc2hfZm9ybWF0dGVyKQ0K ICANCg0KICAjIGFkZCBoYW5kbGVycyB0byBsb2dnZXINCiAgIyBOb3RlOiBvbmNlIGRhZW1vbml6 ZWQgdGhlIGNvbnNvbGUgaGFuZGxlciBnb2VzIHRvIC9kZXYvbnVsbA0KICBsb2dnZXIuYWRkSGFu ZGxlcihzaCkNCiAgbG9nZ2VyLmFkZEhhbmRsZXIoY2gpDQogICANCiMgbWFpbiBlbnRyeSBwb2lu dA0KaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoNCg0KICAjIHBhcnNlIG9wdGlvbnMgYW5kIGFy Z3VtZW50cyB0aGF0IHdlcmUgcGFzc2VkIGluDQogIHVzYWdlID0gInVzYWdlICVwcm9nIFtvcHRp b25zXSBtb25pdG9yX2RpcmVjdG9yeSINCiAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKHVzYWdlKQ0K DQogICMgY3JlYXRlIG91ciBwYXJzZXIgZ3JvdXBzDQogIGdyb3VwID0gT3B0aW9uR3JvdXAocGFy c2VyLCAiRGFlbW9uIG9wdGlvbnMiKQ0KICBncm91cC5hZGRfb3B0aW9uKCItZCIsIi0tZGFlbW9u IiwgZGVzdD0iZGFlbW9uX29wdGlvbnMiLCB0eXBlPSJjaG9pY2UiLCBjaG9pY2VzPVsnc3RhcnQn LCdzdG9wJywncmVzdGFydCcsJ3N0YXR1cyddLCBkZWZhdWx0PU5vbmUsIGhlbHA9InN0YXJ0fHN0 b3B8cmVzdGFydHxzdGF0dXMiKQ0KICBncm91cC5hZGRfb3B0aW9uKCItLXBpZCIsIGFjdGlvbj0i c3RvcmUiLCBkZXN0PSJwaWRmaWxlIiwgaGVscD0ibG9jYXRpb24gb2YgcGlkZmlsZSIpDQogIHBh cnNlci5hZGRfb3B0aW9uX2dyb3VwKGdyb3VwKQ0KICANCiAgKG9wdGlvbnMsIGFyZ3VtZW50cykg PSBwYXJzZXIucGFyc2VfYXJncygpDQoNCiAgIyBtYWtlIHN1cmUgd2UgaGF2ZSByZXF1aXJlZCBv cHRpb25zIGFuZCBhcmd1bWVudHMNCiAgaWYgKCANCiAgICAgICggKG9wdGlvbnMuZGFlbW9uX29w dGlvbnMgPT0gInN0YXJ0Iikgb3IgKG9wdGlvbnMuZGFlbW9uX29wdGlvbnMgPT0gTm9uZSkgKSBh bmQNCiAgICAgICggKGxlbihhcmd1bWVudHMpICE9IDEpICkNCiAgICAgKToNCiAgICBzeXMuc3Rk ZXJyLndyaXRlKCJFcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIGRpcmVjdG9yeSB0byBtb25pdG9y XG4iKQ0KICAgIHBhcnNlci5wcmludF9oZWxwKCkNCiAgICBzeXMuZXhpdCgxKQ0KDQogICMgbWFr ZSBzdXJlIHdlIGhhdmUgYSBwaWRmaWxlDQogIGlmIG5vdCBvcHRpb25zLnBpZGZpbGU6DQogICAg cGlkZmlsZSA9ICIvdmFyL3J1bi97MH0ucGlkIi5mb3JtYXQob3MucGF0aC5zcGxpdGV4dChvcy5w YXRoLmJhc2VuYW1lKF9fZmlsZV9fKSlbMF0pDQogIGVsc2U6DQogICAgcGlkZmlsZSA9IG9wdGlv bnMucGlkZmlsZQ0KDQogIHN5cy5zdGRlcnIud3JpdGUocGlkZmlsZSkNCg0KICAjIEluaXRpYWxp emUgb3VyIGxvZ2dpbmcgc3lzdGVtDQogIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKG9zLnBhdGgu c3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkpWzBdKQ0KICBpbml0X2xvZ2dp bmcobG9nKQ0KDQogICMgY3JlYXRlIG91ciBtYWluIGRhZW1vbg0KICBkYWVtb24gPSBNYWluRGFl bW9uKHBpZGZpbGUsIGxvZykNCiAgZGFlbW9uLnNldF9vcHRpb25zKG9wdGlvbnMsYXJndW1lbnRz KQ0KICBpZiBvcHRpb25zLmRhZW1vbl9vcHRpb25zOg0KICAgIGxvZy5pbmZvKCJjb21tYW5kIHJl Y2VpdmVkOiB7MH0iLmZvcm1hdChvcHRpb25zLmRhZW1vbl9vcHRpb25zKSkNCiAgICBpZiBvcHRp b25zLmRhZW1vbl9vcHRpb25zID09ICdzdGFydCc6DQogICAgICBkYWVtb24uc3RhcnQoKQ0KICAg IGVsaWYgb3B0aW9ucy5kYWVtb25fb3B0aW9ucyA9PSAnc3RvcCc6DQogICAgICBkYWVtb24uc3Rv cCgpDQogICAgZWxzZToNCiAgICAgIGxvZy5lcnJvcigidW5rbm93biBjb21tYW5kIikNCiAgICAg IHN5cy5leGl0KDIpDQogIGVsc2U6IA0KICAgIGxvZy5pbmZvKCJydW5uaW5nIGluIGZvcmVncm91 bmQiKQ0KICAgIGRhZW1vbi5ydW4oKQ0KDQogIHN5cy5leGl0KDApDQo= --bcaec554db0ed991c204cddd24d9 Content-Type: application/octet-stream; name="daemon.py" Content-Disposition: attachment; filename="daemon.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h97qfjh51 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ2xhc3M6IERh ZW1vbg0KIyBBdXRob3I6IFN0ZXBoZW4gQnVubiANCiMNCiMgTm90ZXM6DQojIEFkYXB0ZWQgZnJv bSBodHRwczovL2dpdGh1Yi5jb20vYmFyYmVyai9TYWVycGVudC9ibG9iL21hc3Rlci9kYWVtb24v bGliL2RhZW1vbi5weQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoiIiINCkRhZW1vbml6ZSB0aGUg Y3VycmVudCBydW5uaW5nIHByb2Nlc3MNCiIiIg0KaW1wb3J0IHN5cywgb3MsIHRpbWUsIGF0ZXhp dCwgc2lnbmFsLCBsb2dnaW5nDQpmcm9tIHNpZ25hbCBpbXBvcnQgU0lHVEVSTQ0KDQoNCmNsYXNz IERhZW1vbihvYmplY3QpOg0KICAnJycNCiAgb3VyIGRhZW1vbiBjbGFzcw0KICAnJycNCiAgZGVm IF9faW5pdF9fKHNlbGYsIHBpZGZpbGUsIGxvZ2hhbmRsZSwgc3RkaW49Jy9kZXYvbnVsbCcsIHN0 ZG91dD0nL2Rldi9udWxsJywgc3RkZXJyPScvZGV2L251bGwnKToNCiAgICBzZWxmLnN0ZGluID0g c3RkaW4NCiAgICBzZWxmLnN0ZG91dCA9IHN0ZG91dA0KICAgIHNlbGYuc3RkZXJyID0gc3RkZXJy DQogICAgc2VsZi5waWRmaWxlID0gcGlkZmlsZQ0KICAgIHNlbGYubG9nID0gbG9naGFuZGxlDQoN CiAgZGVmIGRhZW1vbml6ZShzZWxmKToNCiAgICAnJycNCiAgICBEbyB0aGUgImRvdWJsZSIgZm9y ayBwcm9jZXNzIG91dGxpbmVkIGluIFJpY2hhcmQgU3RldmVucyBVTklYIE5ldHdvcmsNCiAgICBQ cm9ncmFtbWluZyBib29rIGFuZCBiYXNlZCBvbiB0aGUgc2FtcGxlIGNvZGUgaW4gdGhlIE8nUmVp bGx5IGJvb2sgUHl0aG9uDQogICAgZm9yIFVOSVggYW5kIExpbnV4IFN5c3RlbSBBZG1pbmlzdHJh dGlvbiAocGcgMzE4KQ0KICAgICcnJw0KICAgIHNlbGYubG9nLmRlYnVnKCdEYWVtb25pemluZyBw cm9jZXNzJykNCiAgICB0cnk6DQogICAgICBzZWxmLmxvZy5kZWJ1ZygnRG9pbmcgZm9yayAjMScp DQogICAgICBwaWQgPSBvcy5mb3JrKCkNCiAgICAgIGlmIHBpZCA+IDA6DQogICAgICAgIHN5cy5l eGl0KDApICMgZXhpdCBmaXJzdCBwYXJlbnQNCiAgICBleGNlcHQgT1NFcnJvciwgZToNCiAgICAg IG1lc3NhZ2UgPSAiZm9yayAjMSBmYWlsZWQ6ICh7MH0pIHsxfVxuIi5mb3JtYXQoZS5lcnJubywg ZS5zdHJlcnJvcikNCiAgICAgIHNlbGYubG9nLmVycm9yKG1lc3NhZ2UpDQogICAgICBzeXMuc3Rk ZXJyLndyaXRlKG1lc3NhZ2UpDQogICAgICBzeXMuZXhpdCgxKQ0KICAgIA0KICAgICMgZGVjb3Vw bGUgZnJvbSBwYXJlbnQgZW52aXJvbm1lbnQNCiAgICBvcy5jaGRpcigiLyIpDQogICAgb3MudW1h c2soMCkNCiAgICBvcy5zZXRzaWQoKQ0KDQogICAgIyBwcmVmb3JtIHRoZSBzZWNvbmQgZm9yaw0K ICAgIHRyeToNCiAgICAgIHNlbGYubG9nLmRlYnVnKCdEb2luZyBmb3JrICMyJykgICAgIA0KICAg ICAgcGlkID0gb3MuZm9yaygpDQogICAgICBpZiBwaWQgPiAwOg0KICAgICAgICBzeXMuZXhpdCgw KSAjIGV4aXQgc2Vjb25kIHBhcmVudC4NCiAgICBleGNlcHQgT1NFcnJvciwgZToNCiAgICAgIG1l c3NhZ2UgPSAiZm9yayAjMiBmYWlsZWQ6ICh7MH0pIHsxfVxuIi5mb3JtYXQoZS5lcnJubywgZS5z dHJlcnJvcikNCiAgICAgIHNlbGYubG9nLmVycm9yKG1lc3NhZ2UpDQogICAgICBzeXMuc3RkZXJy LndyaXRlKG1lc3NhZ2UpDQogICAgICBzeXMuZXhpdCgxKQ0KDQogICAgIyByZWRpcmVjdCBzdGFu ZGFyZCBmaWxlIGRlc2NyaXB0b3JzLg0KICAgIGZvciBmZCBpbiBzeXMuc3Rkb3V0LCBzeXMuc3Rk ZXJyOiBmZC5mbHVzaCgpDQogICAgc2kgPSBmaWxlKHNlbGYuc3RkaW4sICdyJykNCiAgICBzbyA9 IGZpbGUoc2VsZi5zdGRvdXQsICdhKycpDQogICAgc2UgPSBmaWxlKHNlbGYuc3RkZXJyLCAnYSsn LCAwKQ0KICAgIG9zLmR1cDIoc2kuZmlsZW5vKCksIHN5cy5zdGRpbi5maWxlbm8oKSkNCiAgICBv cy5kdXAyKHNvLmZpbGVubygpLCBzeXMuc3Rkb3V0LmZpbGVubygpKQ0KICAgIG9zLmR1cDIoc2Uu ZmlsZW5vKCksIHN5cy5zdGRlcnIuZmlsZW5vKCkpDQoNCiAgICAjIHdyaXRlIHBpZGZpbGUNCiAg ICBwaWQgPSBzdHIob3MuZ2V0cGlkKCkpDQogICAgZmlsZShzZWxmLnBpZGZpbGUsICd3KycpLndy aXRlKCIlc1xuIiAlIHBpZCkNCg0KICAgICMgcmVnaXN0ZXIgYSBmdW5jdGlvbiB0byBkbyBhIGdy YWNlZnVsbCBzaHV0ZG93bg0KICAgIGF0ZXhpdC5yZWdpc3RlcihzZWxmLnNodXRkb3duKQ0KDQog IGRlZiBnZXRwaWQoc2VsZik6DQogICAgJycnDQogICAgZ2V0IHRoZSBwaWQgb2YgdGhlIHJ1bm5p bmcgZGFlbW9uDQogICAgJycnIA0KICAgIHRyeToNCiAgICAgIHBmID0gZmlsZShzZWxmLnBpZGZp bGUsICdyJykNCiAgICAgIHBpZCA9IGludChwZi5yZWFkKCkuc3RyaXAoKSkNCiAgICAgIHBmLmNs b3NlKCkNCiAgICBleGNlcHQgSU9FcnJvciwgZToNCiAgICAgIHBpZCA9IE5vbmUNCg0KICAgIHJl dHVybiBwaWQNCg0KICBkZWYgc2h1dGRvd24oc2VsZik6DQogICAgJycnDQogICAgZG8gYSBncmFj ZWZ1bGwgc2h1dGRvd24gb2YgdGhlIGRhZW1vbiAoY2xlYW4gZXZlcnl0aGluZyB1cCkNCiAgICAn JycNCiAgICBzZWxmLmxvZy5kZWJ1Zygic3RvcHBpbmcgdGhlIGRhZW1vbiIpDQogICAgb3MucmVt b3ZlKHNlbGYucGlkZmlsZSkNCg0KICBkZWYgc3RhcnQoc2VsZik6DQogICAgJycnDQogICAgU3Rh cnQgdGhlIGRhZW1vbg0KICAgICcnJw0KICAgICMgbWFrZSBzdXJlIHdlIGFyZSBub3QgYWxyZWFk eSBydW5uaW5nDQoNCiAgICBpZiBzZWxmLmdldHBpZCgpOg0KICAgICAgbWVzc2FnZSA9ICJwaWRm aWxlIHswfSBhbHJlYWR5IGV4aXN0cy4gRGFlbW9uIGlzIGFscmVhZHkgcnVubmluZz9cbiIuZm9y bWF0KHNlbGYucGlkZmlsZSkNCiAgICAgIHNlbGYubG9nLmVycm9yKG1lc3NhZ2UpDQogICAgICBz eXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpDQogICAgICBzeXMuZXhpdCgxKQ0KDQogICAgc2VsZi5k YWVtb25pemUoKQ0KICAgIHNlbGYucnVuKCkNCg0KICBkZWYgc3RhdHVzKHNlbGYpOg0KICAgICcn Jw0KICAgIFF1ZXJ5IHRoZSBzdGF0dXMgb2YgdGhlIGRhZW1vbg0KICAgICcnJw0KICAgIHBpZCA9 IHNlbGYuZ2V0cGlkKCkNCiAgICB0cnk6DQogICAgICBwcm9jZmlsZSA9IGZpbGUoIi9wcm9jLyVz L3N0YXR1cyIgJSBwaWQsICdyJykNCiAgICAgIHByb2NmaWxlLmNsb3NlKCkNCiAgICBleGNlcHQg SU9FcnJvciwgZToNCiAgICAgIG1lc3NhZ2UgPSAiVGhlcmUgaXMgbm90IGEgcHJvY2VzcyB3aXRo IHRoZSBQSUQgc3BlY2lmaWVkIGluIHswfVxuIi5mb3JtYXQoc2VsZi5waWRmaWxlKQ0KICAgICAg c2VsZi5sb2cuZXJyb3IobWVzc2FnZSkNCiAgICAgIHN5cy5zdGRlcnIud3JpdGUobWVzc2FnZSkN CiAgICAgIHN5cy5leGl0KDApDQogICAgZXhjZXB0IFR5cGVFcnJvcjoNCiAgICAgIG1lc3NhZ2Ug PSAicGlkZmlsZSB7MH0gZG9lcyBub3QgZXhpc3RcbiIuZm9ybWF0KHNlbGYucGlkZmlsZSkNCiAg ICAgIHNlbGYubG9nLmVycm9yKG1lc3NhZ2UpDQogICAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3Nh Z2UpDQogICAgICBzeXMuZXhpdCgwKQ0KDQogICAgbWVzc2FnZSA9ICJUaGUgcHJvY2VzcyB3aXRo IFBJRCB7MH0gaXMgcnVubmluZ1xuIi5mb3JtYXQocGlkKQ0KICAgIHN5cy5zdGRvdXQud3JpdGUo bWVzc2FnZSkNCiAgICBzZWxmLmxvZy5pbmZvKG1lc3NhZ2UpDQoNCiAgZGVmIHN0b3Aoc2VsZik6 DQogICAgJycnDQogICAgU3RvcCB0aGUgZGFlbW9uDQogICAgJycnDQogICAgcGlkID0gc2VsZi5n ZXRwaWQoKQ0KICAgIGlmIG5vdCBwaWQ6DQogICAgICBtZXNzYWdlID0gInBpZGZpbGUgezB9IGRv ZXMgbm90IGV4aXN0LiAgRGFlbW9uIGlzIG5vdCBydW5uaW5nP1xuIi5mb3JtYXQoc2VsZi5waWRm aWxlKQ0KICAgICAgcmV0dXJuDQoNCiAgICBzZWxmLmxvZy5kZWJ1Zygnc3RvcHBpbmcgdGhlIGRh ZW1vbicpDQogICAgdHJ5Og0KICAgICAgb3Mua2lsbChwaWQsIFNJR1RFUk0pDQogICAgICB0aW1l LnNsZWVwKDEpDQogICAgZXhjZXB0IE9TRXJyb3IsIGVycjoNCiAgICAgIGVyciA9IHN0cihlcnIp DQogICAgICBpZiBlcnIuZmluZCgiTm8gc3VjaCBwcm9jZXNzIikgPiAwOg0KICAgICAgICBpZiBv cy5wYXRoLmV4aXN0cyhzZWxmLnBpZGZpbGUpOg0KICAgICAgICAgIG1lc3NhZ2UgPSAicmVtb3Zp bmcgcGlkZmlsZSBzaW5jZSB0aGVyZSBpcyBub3QgYSBwcm9jZXNzIg0KICAgICAgICAgIHNlbGYu bG9nLmVycm9yKG1lc3NhZ2UpDQogICAgICAgICAgb3MucmVtb3ZlKHNlbGYucGlkZmlsZSkNCiAg ICAgICAgICBwYXNzDQogICAgICBlbHNlOg0KICAgICAgICBtZXNzYWdlID0gImVycm9yIHdoaWxl IHNlbmRpbmcgU0lHVEVSTTogezB9Ii5mb3JtYXQoZXJyKQ0KICAgICAgICBzZWxmLmxvZy5lcnJv cihtZXNzYWdlKQ0KICAgICAgICBzeXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpDQogICAgICAgIHN5 cy5leGl0KDEpDQoNCiAgZGVmIHJlc3RhcnQoc2VsZik6DQogICAgJycnDQogICAgcmVzdGFydCB0 aGUgZGFlbW9uDQogICAgJycnDQogICAgc2VsZi5zdG9wKCkNCiAgICBzZWxmLnN0YXJ0KCkNCg0K ICBkZWYgcnVuKHNlbGYpOg0KICAgICcnJw0KICAgIG92ZXJpZGUgdGhpcyBpbiBzdWJjbGFzcw0K ICAgICcnJw0KICAgIA0KDQoNCg== --bcaec554db0ed991c204cddd24d9 Content-Type: application/octet-stream; name="maindaemon.py" Content-Disposition: attachment; filename="maindaemon.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h97qft6j2 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgppbXBvcnQgc3lzLCB0aW1lLCBsb2dnaW5nLCBzaWduYWws IHRocmVhZGluZwppbXBvcnQgb3MsIHNodXRpbCwgUXVldWUsIGZubWF0Y2gsIG11bHRpcHJvY2Vz c2luZwpmcm9tIHNpZ25hbCBpbXBvcnQgU0lHVEVSTSwgU0lHS0lMTApmcm9tIGRhdGV0aW1lIGlt cG9ydCBkYXRldGltZSwgZGF0ZQpmcm9tIGRhZW1vbiBpbXBvcnQgRGFlbW9uCgpjbGFzcyBGaWxl UmVhZGVyKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKCiAgZGVmIF9faW5pdF9fKHNlbGYsIG5h bWUsIGxvZ2hhbmRsZXIsIHdvcmtfcXVldWUsIHNxbF9xdWV1ZSk6CiAgICBtdWx0aXByb2Nlc3Np bmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmKQogICAgc2VsZi5sb2cgPSBsb2doYW5kbGVyCiAgICBz ZWxmLndvcmtfcXVldWUgPSB3b3JrX3F1ZXVlCiAgICBzZWxmLnNxbF9xdWV1ZSA9IHNxbF9xdWV1 ZQogICAgc2VsZi5raWxsX21lc3NhZ2UgPSBGYWxzZQogICAgc2VsZi5uYW1lID0gbmFtZQoKICBk ZWYgc2h1dGRvd24oc2VsZiwgKmFyZ3MsICoqa3dhcmcpOgogICAgc2VsZi5raWxsX21lc3NhZ2Ug PSBUcnVlCiAgICBzZWxmLmxvZy5pbmZvKCJzaHV0dGluZyBkb3duIHswfSIuZm9ybWF0KHNlbGYu bmFtZSkpICAKCiAgZGVmIHJ1bihzZWxmKToKICAgIHBpZG1zZyA9ICJmaWxlIHdvcmtlciBwaWQ6 IHswfSIuZm9ybWF0KG9zLmdldHBpZCgpKQogICAgc2VsZi5sb2cuaW5mbyhwaWRtc2cpCiAgICBz aWduYWwuc2lnbmFsKFNJR1RFUk0sIHNlbGYuc2h1dGRvd24pCiAgICBydW5fY291bnQgPSAwCiAg ICB3aGlsZSBub3Qgc2VsZi5raWxsX21lc3NhZ2U6CiAgICAgIHRyeToKICAgICAgICBydW5fY291 bnQgKz0gMQogICAgICAgIHRhc2sgPSBzZWxmLndvcmtfcXVldWUuZ2V0KCkKICAgICAgICB0YXNr X21lc3NhZ2UgPSAiZGF0YSBmcm9tIHswfSIuZm9ybWF0KHRhc2spCiAgICAgICAgc2VsZi5zcWxf cXVldWUucHV0KHRhc2tfbWVzc2FnZSkKICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0Ogog ICAgICAgIGJyZWFrCiAgICAgIGlmIHNlbGYud29ya19xdWV1ZS5lbXB0eSgpOgogICAgICAgIGJy ZWFrCgogICAgc3RhdHNfbXNnID0gIndvcmtlcjogezB9IHByb2Nlc3NlZCB7MX0iLmZvcm1hdChz ZWxmLm5hbWUsIHJ1bl9jb3VudCkKICAgIHNlbGYubG9nLmluZm8oc3RhdHNfbXNnKQogICAgc2Vs Zi5sb2cuaW5mbygicHJvY2VzcyB7MH0ga2lsbGVkIi5mb3JtYXQoc2VsZi5uYW1lKSkKCmNsYXNz IHByb2NEaXNrKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKCiAgZGVmIF9faW5pdF9fKHNlbGYs IG5hbWUsIGxvZ2hhbmRsZXIsIGxvY2F0aW9uLCB3b3JrX3F1ZXVlKToKICAgIG11bHRpcHJvY2Vz c2luZy5Qcm9jZXNzLl9faW5pdF9fKHNlbGYpCiAgICBzZWxmLmtpbGxfbWVzc2FnZSA9IEZhbHNl CiAgICBzZWxmLmxvZyA9IGxvZ2hhbmRsZXIKICAgIHNlbGYubG9jYXRpb24gPSBsb2NhdGlvbgog ICAgc2VsZi5zcWxfcXVldWUgPSB3b3JrX3F1ZXVlCiAgICBzZWxmLmxhc3RfY2hlY2sgPSBkYXRl dGltZSgxOTcwLDAxLDAxKQogICAgc2VsZi5maWxlX3F1ZXVlID0gbXVsdGlwcm9jZXNzaW5nLlF1 ZXVlKCkKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYud29ya2VyX2NvdW50ID0gMAoKICBk ZWYgY2hlY2tfZGlzayhzZWxmKToKICAgIGZvdW5kX2ZpbGVzID0gRmFsc2UKICAgIGZvciByb290 LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYubG9jYXRpb24pOgogICAgICBmb3IgZmlsZW5h bWUgaW4gZm5tYXRjaC5maWx0ZXIoZmlsZXMsIioudGFyLmd6Iik6IAogICAgICAgICMgY2hlY2sg dG8gc2VlIGlmIHRoZSBmaWxlIGlzIG5ld2VyIHRoYW4gdGhlIGxhc3QgInJ1biIgdGltZQogICAg ICAgICMgaWYgaXQgaXMsIGl0cyBuZXcgLS0gb3RoZXJ3aXNlIGl0IHNob3VsZCBhbHJlYWQgYnkg aW4gdGhlIHF1ZXVlCiAgICAgICAgbW9kX3RpbWUgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKG9z LnBhdGguZ2V0bXRpbWUob3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKSkpCiAgICAgICAgaWYg bW9kX3RpbWUgPj0gc2VsZi5sYXN0X2NoZWNrOgogICAgICAgICAgc2VsZi5maWxlX3F1ZXVlLnB1 dChvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpKQogICAgICAgICAgZm91bmRfZmlsZXMgPSBU cnVlCgogICAgaWYgZm91bmRfZmlsZXM6CiAgICAgIHNlbGYubGFzdF9jaGVjayA9IGRhdGV0aW1l Lm5vdygpCgogIGRlZiBzaHV0ZG93bihzZWxmLCAqYXJncywgKiprd2FyZyk6CiAgICBzZWxmLmtp bGxfbWVzc2FnZSA9IFRydWUKICAgIHNlbGYubG9nLmluZm8oInNodXR0aW5nIGRvd24gezB9Ii5m b3JtYXQoc2VsZi5uYW1lKSkKCiAgZGVmIHJ1bihzZWxmKToKICAgIHBpZG1zZyA9ICJkaXNrIHBy b2MgcGlkOiB7MH0iLmZvcm1hdChvcy5nZXRwaWQoKSkKICAgIHNlbGYubG9nLmluZm8ocGlkbXNn KQogICAgd29ya2VyX3NwYXducyA9IFtdCiAgICBzaWduYWwuc2lnbmFsKFNJR1RFUk0sIHNlbGYu c2h1dGRvd24pCgogICAgd2hpbGUgbm90IHNlbGYua2lsbF9tZXNzYWdlOgogICAgICB0cnk6CiAg ICAgICAgc2VsZi5jaGVja19kaXNrKCkKICAgICAKICAgICAgICBpZiBub3Qgc2VsZi5maWxlX3F1 ZXVlLmVtcHR5KCk6CiAgICAgICAgICBpZiBzZWxmLndvcmtlcl9jb3VudCA8PSA0OgogICAgICAg ICAgICBzZWxmLmxvZy5pbmZvKCJzcGF3bmluZyBwcm9jZXNzLi4uIikKICAgICAgICAgICAgd29y a2VyID0gRmlsZVJlYWRlcigiRmlsZVNwYXduICIgKyBzdHIoc2VsZi53b3JrZXJfY291bnQpLCBz ZWxmLmxvZywgc2VsZi5maWxlX3F1ZXVlLCBzZWxmLnNxbF9xdWV1ZSkKICAgICAgICAgICAgd29y a2VyLnN0YXJ0KCkKICAgICAgICAgICAgd29ya2VyX3NwYXducy5hcHBlbmQod29ya2VyKQogICAg ICAgICAgICBzZWxmLndvcmtlcl9jb3VudCArPSAxCgogICAgICAgICMgb3V0cHV0IHNvbWUgc3Rh dHMKICAgICAgICBzdGF0c19tc2cgPSAiZmlsZSBxdWV1ZTogezB9IHNxbCBxdWV1ZTogezF9IHdv cmtlcnM6IHsyfSIuZm9ybWF0KHNlbGYuZmlsZV9xdWV1ZS5xc2l6ZSgpLCBzZWxmLnNxbF9xdWV1 ZS5xc2l6ZSgpLCBzZWxmLndvcmtlcl9jb3VudCkKICAgICAgICBzZWxmLmxvZy5pbmZvKHN0YXRz X21zZykgCiAgICAgICAgdGltZS5zbGVlcCgyMCkKICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJy dXB0OgogICAgICAgIGJyZWFrCgogICAgZm9yIGNoaWxkIGluIHdvcmtlcl9zcGF3bnM6CiAgICAg IHNlbGYubG9nLmluZm8oIktpbGxpbmcgd29ya2VyIHswfSIuZm9ybWF0KGNoaWxkLm5hbWUpKQog ICAgICBjaGlsZC50ZXJtaW5hdGUoKQoKICAgIHNlbGYubG9nLmluZm8oInswfSBraWxsZWQiLmZv cm1hdChzZWxmLm5hbWUpKSAgCiAgICAKY2xhc3MgcHJvY1NRTChtdWx0aXByb2Nlc3NpbmcuUHJv Y2Vzcyk6CiAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGxvZ2hhbmRsZXIsIHdvcmtfcXVldWUp OgogICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX19pbml0X18oc2VsZikKICAgIHNlbGYubG9n ID0gbG9naGFuZGxlcgogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5raWxsX21lc3NhZ2Ug PSBGYWxzZQogICAgc2VsZi5zcWxfcXVldWUgPSB3b3JrX3F1ZXVlCgogIGRlZiBzaHV0ZG93bihz ZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgc2VsZi5raWxsX21lc3NhZ2UgPSBUcnVlCiAgICBz ZWxmLmxvZy5pbmZvKCJzaHV0dGluZyBkb3duIikKCiAgZGVmIHJ1bihzZWxmKToKICAgIHBpZG1z ZyA9ICJwcm9jU1FMIFBJRDogezB9Ii5mb3JtYXQob3MuZ2V0cGlkKCkpCiAgICBzZWxmLmxvZy5p bmZvKHBpZG1zZykKICAgIHNpZ25hbC5zaWduYWwoU0lHVEVSTSwgc2VsZi5zaHV0ZG93bikKICAg IHdoaWxlIG5vdCBzZWxmLmtpbGxfbWVzc2FnZToKICAgICAgdHJ5OgogICAgICAgIG5vdyA9IGRh dGV0aW1lLm5vdygpCiAgICAgICAgdGFzayA9IHNlbGYuc3FsX3F1ZXVlLmdldCgpCiAgICAgICAg c3RhdHNfbXNnID0gIlNRTDogezB9Ii5mb3JtYXQoc2VsZi5zcWxfcXVldWUucXNpemUoKSkKICAg ICAgICBzZWxmLmxvZy5pbmZvKHN0YXRzX21zZykKICAgICAgICB0aW1lLnNsZWVwKDEwKQogICAg ICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgYnJlYWsKICAgIHNlbGYubG9nLmlu Zm8oCiAgICAgICgiezB9IGtpbGxlZC4iLmZvcm1hdChzZWxmLm5hbWUpKQogICAgKQoKY2xhc3Mg TWFpbkRhZW1vbihEYWVtb24pOgogICcnJwogIGltcGxlbWVudCB0aGUgZGFlbW9uCiAgJycnCiAg ZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICBzdXBlcihNYWluRGFlbW9u LHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKICAgIHNlbGYuc3RvcHBpbmcgPSBGYWxz ZQogICAgc2VsZi5tYWluX3Byb2MgPSBbXQogICAgc2VsZi5xU1FMZGF0YSA9IG11bHRpcHJvY2Vz c2luZy5RdWV1ZSgpCgogIGRlZiBzZXRfb3B0aW9ucyhzZWxmLCBvcHRpb25zLCBhcmd1bWVudHMp OgogICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgc2VsZi5hcmd1bWVudHMgPSBhcmd1bWVu dHMKCiAgZGVmIHNldF9zdG9wKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICBzZWxmLnN0b3Bw aW5nID0gVHJ1ZQogICAgc2VsZi5sb2cuaW5mbygnc2V0IHN0b3AhIGdvaW5nIHRvIHN0b3Agbm93 JykKCiAgZGVmIGlzX3N0b3BwaW5nKHNlbGYpOgogICAgcmV0dXJuIHNlbGYuc3RvcHBpbmcKCiAg ZGVmIHJ1bihzZWxmKToKICAgIHBpZG1zZyA9ICJNYWluRGFlbW9uIFBJRDogezB9Ii5mb3JtYXQo b3MuZ2V0cGlkKCkpCiAgICBzZWxmLmxvZy5pbmZvKHBpZG1zZykKICAgIHNpZ25hbC5zaWduYWwo U0lHVEVSTSwgc2VsZi5zZXRfc3RvcCkKICAKICAgICMgc3RhcnQgb3VyIHR3byBtYWluIHRocmVh ZHMKICAgIHFkaXNrID0gcHJvY0Rpc2soIkRpc2sgQ2hlY2sgUHJvY2VzcyIsIHNlbGYubG9nLCBz ZWxmLmFyZ3VtZW50c1swXSwgc2VsZi5xU1FMZGF0YSkKICAgIHFzcWxkYXRhID0gcHJvY1NRTCgi U1FMIERhdGEgUHJvY2VzcyIsIHNlbGYubG9nLCBzZWxmLnFTUUxkYXRhKQogICAgc2VsZi5tYWlu X3Byb2MuYXBwZW5kKHFkaXNrKQogICAgc2VsZi5tYWluX3Byb2MuYXBwZW5kKHFzcWxkYXRhKQoK ICAgIGZvciBjaGlsZCBpbiBzZWxmLm1haW5fcHJvYzoKICAgICAgY2hpbGQuc3RhcnQoKQoKICAg ICMgbWFpbiBsb29wCiAgICB3aGlsZSBub3Qgc2VsZi5pc19zdG9wcGluZygpOgogICAgICB0cnk6 CiAgICAgICAgdGltZS5zbGVlcCg2MCkKICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0Ogog ICAgICAgIHNlbGYubG9nLmluZm8oIkNUUkwtQyByZWNlaXZlZCAtIHF1aXR0aW5nIikKICAgICAg ICBzZWxmLnNldF9zdG9wKCkKICAgICAgICBicmVhawoKICAgICMgU0lHVEVSTSByZWNlaXZlZDsg cXVpdAogICAgZm9yIGNoaWxkIGluIHNlbGYubWFpbl9wcm9jOgogICAgICBzZWxmLmxvZy5pbmZv KCJraWxsaW5nIHswfSIuZm9ybWF0KGNoaWxkLm5hbWUpKQogICAgICBjaGlsZC50ZXJtaW5hdGUo KQogICAgc2VsZi5sb2cuaW5mbygnU3RvcHBpbmcgTWFpbkRhZW1vbicpCiAgICAKCgo= --bcaec554db0ed991c204cddd24d9--