Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!goblin1!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed1.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.186 X-Spam-Level: * X-Spam-Evidence: '*H*': 0.63; '*S*': 0.00; 'separately': 0.09; 'tcp': 0.16; 'all,': 0.19; 'trying': 0.19; 'input': 0.22; "i'm": 0.30; 'protocols': 0.31; 'run': 0.32; 'packaging': 0.33; 'connection': 0.35; 'but': 0.35; 'charset:us-ascii': 0.36; 'should': 0.36; 'two': 0.37; 'server': 0.38; 'received:17': 0.38; 'to:addr:python- list': 0.38; 'structure': 0.39; 'to:addr:python.org': 0.39; 'either': 0.39; 'how': 0.40; 'chain': 0.60; 'back': 0.62; 'kind': 0.63; 'acts': 0.74; 'revive': 0.84 MIME-version: 1.0 From: David Farler Content-type: multipart/signed; boundary="Apple-Mail=_865D3A77-7FB1-44E2-A362-A68BF2C87FFE"; protocol="application/pkcs7-signature"; micalg=sha1 Subject: asyncio: wrapping a subprocess in a server Date: Wed, 25 Jun 2014 11:24:55 -0700 To: python-list@python.org X-Mailer: Apple Mail (2.1878.2) X-MANTSH: 1TEIXWV4bG1oaGkdHB0lGUkdDRl5PWBoaHREKTEMXGx0EGx0YBBIZBBsdEBseGh8 aEQpYTRdLEQptfhcaEQpMWRcbGhsbEQpZSRcRClleF2hjeREKQ04XSxsYGmJCH2lhGEd+GXhzB x96GxIYHlweEQpFQxcWaGgdbBgabhwHbGseEgceaR1sBxMTH2gHaWlpG2sdExxraGgZakNJRkV fTgRJRUcUEQpYXBcZBBoEGx4HTU4cExoaHRMFGx0EGx0YBBIZBBsdEBseGh8bEQpeWRdhHmZDf xEKQ1oXGx0EGB4fBBgeBBsYHREKQkUXbU0bGGJMXUdJGGIRCkJOF2tFGlJQHkNcWVxoEQpCTBd jTlJGc2hsa2V8HREKQmwXaHtbfRx4fm9PRkQRCkJAF2BOU0hsWhkYQ3BtEQpCWBdhWnJnexJka F1mUBEKcGgXaVNMWURwHWddZUARCnBoF2xTcBhpBWteHlpAEQpwaBdlQGBAcBpeZmJGXxEKcGg XbR58XV4ZE3NoQ3sRCnBoF29HemEBYlxEBUFJEQpwaxdpSG8eQmhdGFhEexEKcEsXbE5oeGhtb x9jYWgRCnBsF28TThgbcBkdeBhFEQ== X-CLX-Spam: false X-CLX-Score: 1011 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.12.52,1.0.14,0.0.0000 definitions=2014-06-25_06:2014-06-25,2014-06-25,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=1 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1402240000 definitions=main-1406250189 X-Mailman-Approved-At: Wed, 25 Jun 2014 20:31:22 +0200 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: 137 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1403721083 news.xs4all.nl 2933 [2001:888:2000:d::a6]:42342 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:73584 --Apple-Mail=_865D3A77-7FB1-44E2-A362-A68BF2C87FFE Content-Type: multipart/alternative; boundary="Apple-Mail=_7643C36A-0EEB-4400-A7C5-FB7F43329D82" --Apple-Mail=_7643C36A-0EEB-4400-A7C5-FB7F43329D82 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi all, I'm trying to vend some kind of server that spawns a client-unique = subprocess when a client connects. The server acts as a middleman, = receiving structure messages from the client, sending input to the = subprocess, and packaging up subprocess data before sending back to the = client. The connection is long-lived and the client can continue to send = "requests". If the subprocess crashes or dies, the server should be able = to revive it transparently. I know how to separately create server and subprocess protocols and = having the event loop run either until completion, but what is the best = way to chain two protocols together? || Client || <~~ TCP ~~> || Server <--> Subprocess || Regards, David= --Apple-Mail=_7643C36A-0EEB-4400-A7C5-FB7F43329D82 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii Hi = all,

I'm trying to vend some kind of server that = spawns a client-unique subprocess when a client connects. The server = acts as a middleman, receiving structure messages from the client, = sending input to the subprocess, and packaging up subprocess data before = sending back to the client. The connection is long-lived and the client = can continue to send "requests". If the subprocess crashes or dies, the = server should be able to revive it = transparently.

I know how to separately create = server and subprocess protocols and having the event loop run either = until completion, but what is the best way to chain two protocols = together?

|| Client || = <~~ TCP ~~> || Server <--> Subprocess = ||

Regards,
David
= --Apple-Mail=_7643C36A-0EEB-4400-A7C5-FB7F43329D82-- --Apple-Mail=_865D3A77-7FB1-44E2-A362-A68BF2C87FFE Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIMhzCCBjQw ggQcoAMCAQICAR4wDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0 Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxKTAn BgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA3MTAyNDIxMDE1NVoX DTE3MTAyNDIxMDE1NVowgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSsw KQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFy dENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAMcJg8zOLdgasSmkLhOrlr6KMoOMpohBllVHrdRvEg/q6r8jR+EK 75xCGhR8ToREoqe7zM9/UnC6TS2y9UKTpT1v7RSMzR0t6ndl0TWBuUr/UXBhPk+Kmy7bI4yW4urC +y7P3/1/X7U8ocb8VpH/Clt+4iq7nirMcNh6qJR+xjOhV+VHzQMALuGYn5KZmc1NbJQYclsGkDxD z2UbFqE2+6vIZoL+jb9x4Pa5gNf1TwSDkOkikZB1xtB4ZqtXThaABSONdfmv/Z1pua3FYxnCFmdr /+N2JLKutIxMYqQOJebr/f/h5t95m4JgrM3Y/w7YX9d7YAL9jvN4SydHsU6n65cCAwEAAaOCAa0w ggGpMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRTcu2SnODaywFc fH6WNU7y1LhRgjAfBgNVHSMEGDAWgBROC+8apEBbpRdphzDKNGhD0EGu8jBmBggrBgEFBQcBAQRa MFgwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLnN0YXJ0c3NsLmNvbS9jYTAtBggrBgEFBQcwAoYh aHR0cDovL3d3dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6AloCOGIWh0dHA6 Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5j b20vc2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysGAQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0 dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwDQYJKoZIhvcNAQEFBQADggIBAAqDCH14qywG XLhjjF6uHLkjd02hcdh9hrw+VUsv+q1eeQWB21jWj3kJ96AUlPCoEGZ/ynJNScWy6QMVQjbbMXlt UfO4n4bGGdKo3awPWp61tjAFgraLJgDk+DsSvUD6EowjMTNx25GQgyYJ5RPIzKKR9tQW8gGK+2+R HxkUCTbYFnL6kl8Ch507rUdPPipJ9CgJFws3kDS3gOS5WFMxcjO5DwKfKSETEPrHh7p5shuuNktv sv6hxHTLhiMKX893gxdT3XLS9OKmCv87vkINQcNEcIIoFWbP9HORz9v3vQwR4e3ksLc2JZOAFK+s sS5XMEoznzpihEP0PLc4dCBYjbvSD7kxgDwZ+Aj8Q9PkbvE9sIPP7ON0fz095HdThKjiVJe6vofq +n6b1NBc8XdrQvBmunwxD5nvtTW4vtN6VY7mUCmxsCieuoBJ9OlqmsVWQvifIYf40dJPZkk9YgGT zWLpXDSfLSplbY2LL9C9U0ptvjcDjefLTvqSFc7tw1sEhF0n/qpA2r0GpvkLRDmcSwVyPvmjFBGq Up/pNy8ZuPGQmHwFi2/14+xeSUDG2bwnsYJQG2EdJCB6luQ57GEnTA/yKZSTKI8dDQa8Sd3zfXb1 9mOgSF0bBdXbuKhEpuP9wirslFe6fQ1t5j5R0xi72MZ8ikMu1RQZKCyDbMwazlHiMIIGSzCCBTOg AwIBAgIDBvRvMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYG A1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwHhcN MTMwNzAyMjIzMzQ0WhcNMTQwNzAzMTgwMTE3WjBjMRkwFwYDVQQNExBKTnVSdVVjeUdpck90YVY3 MR8wHQYDVQQDDBZhY2N1bXVsYXRvckBpY2xvdWQuY29tMSUwIwYJKoZIhvcNAQkBFhZhY2N1bXVs YXRvckBpY2xvdWQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5e9oPU3CmHO8 86m5r71cGAqNTutrbiHV/hm0fKZ8E8bEsne1a6NJ9N6YKrtHBMeHwkWZ2cwObxDaAtiK3uLOS44Y 67u7Jl7V7P2FZGGTKesAvN7abYgOSr9fBs/v9MJofQc6bkKl2TsHJyfkz/W/2PR8ResBIfX2jQdW bSvRDPwyufa/Sz57O721J6Ne+qX8tAiZKKPEw2QP4uNvHu4JESpmBlvWSi4+1yOF7/gxESHIEtvT FtFbmg/p0SOwK/hHUxbK1Pb1sUcXSMSOg7+/elMMyoHtMZf4k8p8zdzWgsrjHrtxotsuPmoaEFIp JLYU8PvaeqCPKf+yazQhltIo1QIDAQABo4IC3DCCAtgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw HQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBS3U0ubt47c1V4Q0+ML2afT c/wzfzAfBgNVHSMEGDAWgBRTcu2SnODaywFcfH6WNU7y1LhRgjAhBgNVHREEGjAYgRZhY2N1bXVs YXRvckBpY2xvdWQuY29tMIIBTAYDVR0gBIIBQzCCAT8wggE7BgsrBgEEAYG1NwECAzCCASowLgYI KwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwgfcGCCsGAQUFBwIC MIHqMCcWIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MAMCAQEagb5UaGlzIGNlcnRp ZmljYXRlIHdhcyBpc3N1ZWQgYWNjb3JkaW5nIHRvIHRoZSBDbGFzcyAxIFZhbGlkYXRpb24gcmVx dWlyZW1lbnRzIG9mIHRoZSBTdGFydENvbSBDQSBwb2xpY3ksIHJlbGlhbmNlIG9ubHkgZm9yIHRo ZSBpbnRlbmRlZCBwdXJwb3NlIGluIGNvbXBsaWFuY2Ugb2YgdGhlIHJlbHlpbmcgcGFydHkgb2Js aWdhdGlvbnMuMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwuc3RhcnRzc2wuY29tL2NydHUx LWNybC5jcmwwgY4GCCsGAQUFBwEBBIGBMH8wOQYIKwYBBQUHMAGGLWh0dHA6Ly9vY3NwLnN0YXJ0 c3NsLmNvbS9zdWIvY2xhc3MxL2NsaWVudC9jYTBCBggrBgEFBQcwAoY2aHR0cDovL2FpYS5zdGFy dHNzbC5jb20vY2VydHMvc3ViLmNsYXNzMS5jbGllbnQuY2EuY3J0MCMGA1UdEgQcMBqGGGh0dHA6 Ly93d3cuc3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOCAQEASHxChrQ1JH4YjgLleFvAR5us C5W+EamwkIRSbuHJdtfoFgH4DHIuiNsuRqEiiuNygDdbtlI+EQfHFUWz5M6WLr3Zr3xlLghL9qiM //2TW1aoKtqZ+USjp1X83PjicCdXT/USI72fjAIEjIZ2axwY8okDQHfDn/sxZ03MSpaM0CG2y0iX 8jxMZW+jg+ENnV1L1R9QeT2IvgrZRVl8k1CYIZ8IxBlb1A3Tq3TmBdLLpysBDyM2aCNMgkZO6/bu kCYTJuwE0xr6fcWJjxg0NlLWh75zDrZq4sF9fvaYLVcLIJLBJjVlM8FHQbhqXxsc1RF8/xvThZlR vs3J7RwrtuJTKTGCA28wggNrAgEBMIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYG A1UEAxMvU3RhcnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAwb0 bzAJBgUrDgMCGgUAoIIBrzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEP Fw0xNDA2MjUxODI0NTZaMCMGCSqGSIb3DQEJBDEWBBSMb0B/vLkfc/dbCMLml1Rp5Yw2sjCBpQYJ KwYBBAGCNxAEMYGXMIGUMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEr MCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3Rh cnRDb20gQ2xhc3MgMSBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAwb0bzCBpwYLKoZI hvcNAQkQAgsxgZeggZQwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSsw KQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYDVQQDEy9TdGFy dENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQQIDBvRvMA0GCSqGSIb3 DQEBAQUABIIBAKb9C4qneJlAXyQ/U6OFKToA1OrwqNgmtfE5sUfOhy4bROZtZrnF8YwUzU5UqBfE 187aTZ3b4SvVgBSqs7j1mi1NMWvjgsPgdqe8YV6n0v35pXrrRcEOAoevbxqkGFE9atJBqJjw/eMu foQmw4Z+DXTJbXgUOomA2tz9oZMhRUfrG8i9VEfQOLDUR4ePf4PteGT3F7tMIYM94XMeCA3fXAKz a5kFWUz02hk0mFmL/1O0FNobJZZ1BOaOX1+QYVn5eFKG6cJk1EyWDmfisLKiYHmxbnYGNn6jaisz 8JKS80+1WI+pYXwPvqTSNG/R/MAwx2+0YrFQqgPLF4kRdeMzXfsAAAAAAAA= --Apple-Mail=_865D3A77-7FB1-44E2-A362-A68BF2C87FFE--