This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author richard.kiss
Recipients giampaolo.rodola, gvanrossum, pitrou, richard.kiss, vstinner, yselivanov
Date 2014-04-05.23:24:06
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1396740247.08.0.589643949913.issue21163@psf.upfronthosting.co.za>
In-reply-to
Content
I agree it's confusing and I apologize for that.

Background:

This multiplexing pattern is used in pycoinnet, a bitcoin client I'm developing at <https://github.com/richardkiss/pycoinnet>. The BitcoinPeerProtocol class multiplexes protocol messages into multiple asyncio.Queue objects so each interested listener can react. An example listener is in pycoinnet.helpers.standards.install_pong_manager, which looks for "ping" messages and sends "pong" responses. When the peer disconnects, the pong manager sees a None (to indicate EOF), and it exits. The return value is uninteresting, so no reference to the Task is kept.

My client is in late alpha, and mostly works, but when I tried it on Python 3.4.0, it stopped working and I narrowed it down to this.

I'm not certain this behaviour is incorrect, but it's definitely different from 3.3.3, and it seems odd that a GC cycle BEFORE additional references can be made would allow it to work.
History
Date User Action Args
2014-04-05 23:24:07richard.kisssetrecipients: + richard.kiss, gvanrossum, pitrou, vstinner, giampaolo.rodola, yselivanov
2014-04-05 23:24:07richard.kisssetmessageid: <1396740247.08.0.589643949913.issue21163@psf.upfronthosting.co.za>
2014-04-05 23:24:07richard.kisslinkissue21163 messages
2014-04-05 23:24:06richard.kisscreate