[Python-Dev] Towards native fileevents in Python (Was Re: Python multiplexing is too hard)

Ka-Ping Yee ping@lfw.org
Tue, 23 May 2000 02:41:01 -0700 (PDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--1520843820-1916374079-959074861=:461
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 23 May 2000, Alexandre Ferrieux wrote:
> 
> Great !!! That's exactly the kind of Pythonic translation I was
> expecting. Thanks !

Here's a straw man.  Try the attached module.  To test it, run:

    python ./watcher.py 10203

then telnet to port 10203 on the local machine.  You can open
several telnet connections to port 10203 at once.

In one session:

    skuld[1041]% telnet localhost 10203
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    >>> 1 + 2
    3
    >>> spam = 3

In another session:

    skuld[1008]% telnet localhost 10203
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    >>> spam
    3

> We just register an empty string as the callback name (script).
> But this is just a random API choice. Anything more Pythonic is welcome
> (an explicit unregister function is okay for me).

So is there no way to register more than one callback on a
particular file?  Do you ever find yourself wanting to do that?


-- ?!ng

--1520843820-1916374079-959074861=:461
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="watcher.py"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.10005230241010.461@localhost>
Content-Description: 
Content-Disposition: attachment; filename="watcher.py"

IiIiV2F0Y2hlciBtb2R1bGUsIGJ5IEthLVBpbmcgWWVlICgyMiBNYXkgMjAw
MCkuDQoNClRoaXMgbW9kdWxlIGltcGxlbWVudHMgZXZlbnQgaGFuZGxpbmcg
b24gZmlsZXMuICBUbyB1c2UgaXQsIGNyZWF0ZSBhDQpXYXRjaGVyIG9iamVj
dCwgYW5kIHJlZ2lzdGVyIGNhbGxiYWNrcyBvbiB0aGUgV2F0Y2hlciB3aXRo
IHRoZSB3YXRjaCgpDQptZXRob2QuICBXaGVuIHJlYWR5LCBjYWxsIHRoZSBn
bygpIG1ldGhvZCB0byBzdGFydCB0aGUgbWFpbiBsb29wLiIiIg0KDQppbXBv
cnQgc2VsZWN0DQoNCmNsYXNzIFN0b3BXYXRjaGluZzoNCiAgICAiIiJDYWxs
YmFja3MgbWF5IHJhaXNlIHRoaXMgZXhjZXB0aW9uIHRvIGV4aXQgdGhlIG1h
aW4gbG9vcC4iIiINCiAgICBwYXNzDQoNCmNsYXNzIFdhdGNoZXI6DQogICAg
IiIiVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byByZWdpc3Rl
ciBjYWxsYmFja3Mgb24gZmlsZSBldmVudHMuDQogICAgRWFjaCBpbnN0YW5j
ZSByZXByZXNlbnRzIG9uZSBtYXBwaW5nIGZyb20gZmlsZSBldmVudHMgdG8g
Y2FsbGJhY2tzLiIiIg0KDQogICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KICAg
ICAgICBzZWxmLnJlYWRlcnMgPSB7fQ0KICAgICAgICBzZWxmLndyaXRlcnMg
PSB7fQ0KICAgICAgICBzZWxmLmVycmhhbmRsZXJzID0ge30NCiAgICAgICAg
c2VsZi5kaWN0cyA9IFsoInIiLCBzZWxmLnJlYWRlcnMpLCAoInciLCBzZWxm
LndyaXRlcnMpLA0KICAgICAgICAgICAgICAgICAgICAgICgiZSIsIHNlbGYu
ZXJyaGFuZGxlcnMpXQ0KDQogICAgZGVmIHdhdGNoKHNlbGYsIGhhbmRsZSwg
Y2FsbGJhY2ssIG1vZGVzPSJyIik6DQogICAgICAgICIiIlJlZ2lzdGVyIGEg
Y2FsbGJhY2sgb24gYSBmaWxlIGhhbmRsZSBmb3Igc3BlY2lmaWVkIGV2ZW50
cy4NCiAgICAgICAgVGhlICdoYW5kbGUnIGFyZ3VtZW50IG1heSBiZSBhIGZp
bGUgb2JqZWN0IG9yIGFueSBvYmplY3QgcHJvdmlkaW5nDQogICAgICAgIGEg
ZmFpdGhmdWwgJ2ZpbGVubygpJyBtZXRob2QgKHRoaXMgaW5jbHVkZXMgc29j
a2V0cykuICBUaGUgJ21vZGVzJw0KICAgICAgICBhcmd1bWVudCBpcyBhIHN0
cmluZyBjb250YWluaW5nIGFueSBvZiB0aGUgY2hhcnMgInIiLCAidyIsIG9y
ICJlIg0KICAgICAgICB0byBzcGVjaWZ5IHRoYXQgdGhlIGNhbGxiYWNrIHNo
b3VsZCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZmlsZQ0KICAgICAgICBiZWNv
bWVzIHJlYWRhYmxlLCB3cml0YWJsZSwgb3IgZW5jb3VudGVycyBhbiBlcnJv
ciwgcmVzcGVjdGl2ZWx5Lg0KICAgICAgICBUaGUgJ2NhbGxiYWNrJyBzaG91
bGQgYmUgYSBmdW5jdGlvbiB0aGF0IGV4cGVjdHMgdG8gYmUgY2FsbGVkIHdp
dGgNCiAgICAgICAgdGhlIHRocmVlIGFyZ3VtZW50cyAod2F0Y2hlciwgaGFu
ZGxlLCBtb2RlKS4iIiINCiAgICAgICAgZmQgPSBoYW5kbGUuZmlsZW5vKCkN
CiAgICAgICAgZm9yIG1vZGUsIGRpY3QgaW4gc2VsZi5kaWN0czoNCiAgICAg
ICAgICAgIGlmIG1vZGUgaW4gbW9kZXM6IGRpY3RbZmRdID0gKGhhbmRsZSwg
Y2FsbGJhY2spDQoNCiAgICBkZWYgdW53YXRjaChzZWxmLCBoYW5kbGUsIG1v
ZGVzPSJyIik6DQogICAgICAgICIiIlVucmVnaXN0ZXIgYW55IGNhbGxiYWNr
cyBvbiBhIGZpbGUgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnRzLg0KICAgICAg
ICBUaGUgJ2hhbmRsZScgYXJndW1lbnQgc2hvdWxkIGJlIGEgZmlsZSBvYmpl
Y3QgYW5kIHRoZSAnbW9kZXMnDQogICAgICAgIGFyZ3VtZW50IHNob3VsZCBj
b250YWluIG9uZSBvciBtb3JlIG9mIHRoZSBjaGFycyAiciIsICJ3Iiwgb3Ig
ImUiLiIiIg0KICAgICAgICBmZCA9IGhhbmRsZS5maWxlbm8oKQ0KICAgICAg
ICBmb3IgbW9kZSwgZGljdCBpbiBzZWxmLmRpY3RzOg0KICAgICAgICAgICAg
aWYgbW9kZSBpbiBtb2RlcyBhbmQgZGljdC5oYXNfa2V5KGZkKTogZGVsIGRp
Y3RbZmRdDQogICAgICAgICAgICANCiAgICBkZWYgZ28oc2VsZiwgdGltZW91
dD1Ob25lKToNCiAgICAgICAgIiIiTG9vcCBmb3JldmVyLCB3YXRjaGluZyBm
b3IgZmlsZSBldmVudHMgYW5kIHRyaWdnZXJpbmcgY2FsbGJhY2tzLA0KICAg
ICAgICB1bnRpbCBzb21lYm9keSByYWlzZXMgYW4gZXhjZXB0aW9uLiAgVGhl
IFN0b3BXYXRjaGluZyBleGNlcHRpb24NCiAgICAgICAgcHJvdmlkZXMgYSBx
dWlldCB3YXkgdG8gZXhpdCB0aGUgZXZlbnQgbG9vcC4gIElmIGEgdGltZW91
dCBpcyANCiAgICAgICAgc3BlY2lmaWVkLCB0aGUgbG9vcCB3aWxsIGV4aXQg
YWZ0ZXIgdGhhdCBtYW55IHNlY29uZHMgcGFzcyBieSB3aXRoDQogICAgICAg
IG5vIGV2ZW50cyBvY2N1cnJpbmcuIiIiDQogICAgICAgIHRyeToNCiAgICAg
ICAgICAgIHdoaWxlIHNlbGYucmVhZGVycyBvciBzZWxmLndyaXRlcnMgb3Ig
c2VsZi5lcnJoYW5kbGVyczoNCiAgICAgICAgICAgICAgICByZCwgd3IsIGV4
ID0gc2VsZWN0LnNlbGVjdChzZWxmLnJlYWRlcnMua2V5cygpLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3Jp
dGVycy5rZXlzKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5lcnJoYW5kbGVycy5rZXlzKCksIHRpbWVvdXQp
DQogICAgICAgICAgICAgICAgaWYgbm90IChyZCArIHdyICsgZXgpOiBicmVh
aw0KICAgICAgICAgICAgICAgIGZvciBmZHMsIChtb2RlLCBkaWN0KSBpbiBt
YXAoTm9uZSwgW3JkLCB3ciwgZXhdLCBzZWxmLmRpY3RzKToNCiAgICAgICAg
ICAgICAgICAgICAgZm9yIGZkIGluIGZkczoNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZSwgY2FsbGJhY2sgPSBkaWN0W2ZkXQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZiwgaGFuZGxlLCBtb2RlKQ0K
ICAgICAgICBleGNlcHQgU3RvcFdhdGNoaW5nOiBwYXNzDQoNCmlmIF9fbmFt
ZV9fID09ICJfX21haW5fXyI6DQogICAgaW1wb3J0IHN5cywgc29ja2V0LCBj
b2RlDQogICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNv
Y2tldC5TT0NLX1NUUkVBTSkNCiAgICBzLmJpbmQoImxvY2FsaG9zdCIsIDEw
MjAzKSAjIEZpdmUgaXMgUklHSFQgT1VULg0KICAgIHMubGlzdGVuKDEpDQog
ICAgY29uc29sZXMgPSB7fQ0KICAgIGxvY2FscyA9IHt9ICMgU2hhcmUgbG9j
YWxzLCBqdXN0IGZvciBmdW4uDQoNCiAgICBjbGFzcyBSZWRpcmVjdG9yOg0K
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgd3JpdGUpOg0KICAgICAgICAg
ICAgc2VsZi53cml0ZSA9IHdyaXRlDQoNCiAgICBkZWYgZ2V0bGluZShoYW5k
bGUpOg0KICAgICAgICBsaW5lID0gIiINCiAgICAgICAgd2hpbGUgMToNCiAg
ICAgICAgICAgIGNoID0gaGFuZGxlLnJlY3YoMSkNCiAgICAgICAgICAgIGxp
bmUgPSBsaW5lICsgY2gNCiAgICAgICAgICAgIGlmIG5vdCBjaCBvciBjaCA9
PSAiXG4iOiByZXR1cm4gbGluZQ0KDQogICAgZGVmIHJlYWQod2F0Y2hlciwg
aGFuZGxlLCBtb2RlKToNCiAgICAgICAgbGluZSA9IGdldGxpbmUoaGFuZGxl
KQ0KICAgICAgICBpZiBsaW5lOg0KICAgICAgICAgICAgaWYgbGluZVstMjpd
ID09ICJcclxuIjogbGluZSA9IGxpbmVbOi0yXQ0KICAgICAgICAgICAgaWYg
bGluZVstMTpdID09ICJcbiI6IGxpbmUgPSBsaW5lWzotMV0NCiAgICAgICAg
ICAgIG91dCwgZXJyID0gc3lzLnN0ZG91dCwgc3lzLnN0ZGVycg0KICAgICAg
ICAgICAgc3lzLnN0ZG91dCA9IHN5cy5zdGRlcnIgPSBSZWRpcmVjdG9yKGhh
bmRsZS5zZW5kKQ0KICAgICAgICAgICAgbW9yZSA9IGNvbnNvbGVzW2hhbmRs
ZV0ucHVzaChsaW5lKQ0KICAgICAgICAgICAgaGFuZGxlLnNlbmQobW9yZSBh
bmQgIi4uLiAiIG9yICI+Pj4gIikNCiAgICAgICAgICAgIHN5cy5zdGRvdXQs
IHN5cy5zdGRlcnIgPSBvdXQsIGVycg0KICAgICAgICBlbHNlOg0KICAgICAg
ICAgICAgd2F0Y2hlci51bndhdGNoKGhhbmRsZSkNCiAgICAgICAgICAgIGhh
bmRsZS5jbG9zZSgpDQoNCiAgICBkZWYgY29ubmVjdCh3YXRjaGVyLCBoYW5k
bGUsIG1vZGUpOg0KICAgICAgICBucywgYWRkciA9IGhhbmRsZS5hY2NlcHQo
KQ0KICAgICAgICBjb25zb2xlc1tuc10gPSBjb2RlLkludGVyYWN0aXZlQ29u
c29sZShsb2NhbHMsICI8JXM6JWQ+IiAlIGFkZHIpDQogICAgICAgIHdhdGNo
ZXIud2F0Y2gobnMsIHJlYWQpDQogICAgICAgIG5zLnNlbmQoIj4+PiAiKQ0K
DQogICAgdyA9IFdhdGNoZXIoKQ0KICAgIHcud2F0Y2gocywgY29ubmVjdCkN
CiAgICB3LmdvKCkNCg==
--1520843820-1916374079-959074861=:461--