<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Eventlet</title>
	<atom:link href="http://blog.eventlet.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eventlet.net</link>
	<description>A better way to write network applications</description>
	<lastBuildDate>Fri, 12 Apr 2013 20:10:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.eventlet.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Eventlet</title>
		<link>http://blog.eventlet.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.eventlet.net/osd.xml" title="Eventlet" />
	<atom:link rel='hub' href='http://blog.eventlet.net/?pushpress=hub'/>
		<item>
		<title>Powering Convore</title>
		<link>http://blog.eventlet.net/2011/02/16/powering-convore/</link>
		<comments>http://blog.eventlet.net/2011/02/16/powering-convore/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 23:46:33 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://eventlet.wordpress.com/?p=155</guid>
		<description><![CDATA[Congratulations to Eric Florenzano and the entire Convore team for their launch last week and the buzz they&#8217;ve been able to build about their product already.  That&#8217;s awesome! I couldn&#8217;t help but note that Eric&#8217;s posted about the technology powering Convore, and guess what little library is listed there?  That&#8217;s right, Django. &#8230; Seriously though, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=155&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Congratulations to <a href="http://www.eflorenzano.com/">Eric Florenzano</a> and the entire <a href="https://convore.com/">Convore</a> team for their launch last week and the buzz they&#8217;ve been able to build about their product already.  That&#8217;s awesome!</p>
<p>I couldn&#8217;t help but note that Eric&#8217;s posted <a href="http://www.eflorenzano.com/blog/post/technology-behind-convore/">about the technology powering Convore</a>, and guess what little library is listed there?  That&#8217;s right, Django.</p>
<p>&#8230;</p>
<p>Seriously though, it&#8217;s nice to see someone using such a seemingly-oldschool stack to build a cutting-edge application and not being apologetic about it at all.  And this is a great illustration of the sweet spot for Eventlet: quickly creating a novel scalable network application.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/155/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=155&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2011/02/16/powering-convore/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>0.9.14 Out</title>
		<link>http://blog.eventlet.net/2011/01/25/0-9-14-out/</link>
		<comments>http://blog.eventlet.net/2011/01/25/0-9-14-out/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 09:08:10 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/?p=153</guid>
		<description><![CDATA[A good way to start off the week! This release contains numerous bugfixes that have been contributed by excellent people since the last release. It&#8217;s the best version of Eventlet ever! Install it by one of these methods: easy_install eventlet pip install eventlet http://pypi.python.org/packages/source/e/eventlet/eventlet-0.9.14.tar.gz hg clone http://bitbucket.org/which_linden/eventlet/ &#160; To file issues/bugs: http://bitbucket.org/which_linden/eventlet/issues/new/ Here&#8217;s the changes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=153&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A good way to start off the week!  This release contains numerous<br />
bugfixes that have been contributed by excellent people since the last<br />
release.  It&#8217;s the best version of Eventlet ever!</p>
<p>Install it by one of these methods:</p>
<ul>
<li> easy_install eventlet</li>
<li> pip install eventlet</li>
<li> <a href="http://pypi.python.org/packages/source/e/eventlet/eventlet-0.9.14.tar.gz">http://pypi.python.org/packages/source/e/eventlet/eventlet-0.9.14.tar.gz</a></li>
<li> hg clone <a href="http://bitbucket.org/which_linden/eventlet/">http://bitbucket.org/which_linden/eventlet/</a></li>
</ul>
<p>&nbsp;</p>
<p>To file issues/bugs:<br />
<a href="http://bitbucket.org/which_linden/eventlet/issues/new/">http://bitbucket.org/which_linden/eventlet/issues/new/</a></p>
<p>Here&#8217;s the changes in this version:</p>
<ul>
<li> Many fixes to the ZeroMQ hub, which now requires version 2.0.10 or later. Thanks to Ben Ford.</li>
<li> ZeroMQ hub no longer depends on pollhub, and thus works on Windows (thanks, Alexey Borzenkov)</li>
<li> Better handling of connect errors on Windows, thanks again to Alexey Borzenkov and Nat Linden (#67, #69).</li>
<li> More-robust Event delivery, thanks to Malcolm Cleaton</li>
<li> wsgi.py now distinguishes between an empty query string (&#8220;&#8221;) and a non-existent query string (no entry in environ).</li>
<li> wsgi.py handles ipv6 correctly (thanks, redbo)</li>
<li> Better behavior in tpool when you give it nonsensical numbers, thanks to R. Tyler for the nonsense. :)</li>
<li> Fixed importing on 2.5 (#73, thanks to Ruijun Luo)</li>
<li> Hub doesn&#8217;t hold on to invalid fds (#74, thanks to Edward George)</li>
<li> Documentation for eventlet.green.zmq, courtesy of Ben Ford</li>
</ul>
<p>The md5sum for the tarball is dfc96ed14b27392fdc529abcafeed880<br />
The sha256sum is<br />
219207d165176b12565e7f8f40aaadb2965814ce5935dba1097083d0f183bf28<br />
(that&#8217;s right, I totally went there!)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/153/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/153/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=153&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2011/01/25/0-9-14-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>0.9.13 out!</title>
		<link>http://blog.eventlet.net/2010/10/22/0-9-13-out/</link>
		<comments>http://blog.eventlet.net/2010/10/22/0-9-13-out/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 19:51:15 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/2010/10/22/0-9-13-out/</guid>
		<description><![CDATA[It&#8217;s been too long, hasn&#8217;t it? The major new things of interest in this release are the ZeroMQ support, eventlet.green.MySQLdb, and greenthread affinity in tpool. Please try out all three of these new features and file issues if you find bugs! How get it: easy_install eventlet pip install eventlet Download directly from pypi hg clone [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=148&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been too long, hasn&#8217;t it? The major new things of interest in this release are the ZeroMQ support, eventlet.green.MySQLdb, and greenthread affinity in tpool. Please try out all three of these new features and file issues if you find bugs!</p>
<p>How get it:</p>
<ul>
<li> easy_install eventlet</li>
<li> pip install eventlet</li>
<li> <a href="http://pypi.python.org/packages/source/e/eventlet/eventlet-0.9.13.tar.gz">Download directly from pypi</a></li>
<li><code>hg clone <a href="http://bitbucket.org/which_linden/eventlet/">http://bitbucket.org/which_linden/eventlet/</a></code></li>
</ul>
<p><a href="http://bitbucket.org/which_linden/eventlet/issues/new/">File issues/bugs here.</a></p>
<p>Full changelog:</p>
<ul>
<li>ZeroMQ hub, and eventlet.green.zmq make supersockets green. Thanks to Ben Ford! Check out the examples zmq_chat.py and<br />
distributed_websocket_chat.py.</li>
<li>eventlet.green.MySQLdb added. It&#8217;s an interface to MySQLdb that uses tpool to make it appear nonblocking</li>
<li>Greenthread affinity in tpool. Each greenthread is assigned to the same thread when using tpool, making it easier to work with<br />
non-thread-safe libraries.</li>
<li>Eventlet now depends on greenlet 0.3 or later.</li>
<li>Fixed a hang when using tpool during an import causes another import. Thanks to mikepk for tracking that down.</li>
<li>Improved websocket draft 76 compliance, thanks to Nick V.</li>
<li>Rare greenthread.kill() bug fixed, which was probably brought about by a bugfix in greenlet 0.3.</li>
<li>Easy_installing eventlet should no longer print an ImportError about greenlet</li>
<li>Support for serving up SSL websockets, thanks to chwagssd for reporting #62</li>
<li>eventlet.wsgi properly sets &#8216;wsgi.url_scheme&#8217; environment variable to &#8216;https&#8217;, and &#8216;HTTPS&#8217; to &#8216;on&#8217; if serving over ssl</li>
<li>Blocking detector uses setitimer on 2.6 or later, allowing for sub-second block detection, thanks to rtyler.</li>
<li>Blocking detector is documented now, too</li>
<li>socket.create_connection properly uses dnspython for nonblocking dns. Thanks to rtyler.</li>
<li>Removed EVENTLET_TPOOL_DNS, nobody liked that. But if you were using it, install dnspython instead. Thanks to pigmej and gholt.</li>
<li>Removed _main_wrapper from greenthread, thanks to Ambroff adding keyword arguments to switch() in 0.3!</li>
</ul>
<p>The md5sum of the tarball is 2273527ca1715bad018090fdd2d480cf.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=148&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/10/22/0-9-13-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>Blocking Detection Article</title>
		<link>http://blog.eventlet.net/2010/08/30/blocking-detection-article/</link>
		<comments>http://blog.eventlet.net/2010/08/30/blocking-detection-article/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 19:19:50 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/?p=143</guid>
		<description><![CDATA[Check out R. Tyler&#8217;s post on blocking detection in Eventlet.  It&#8217;s good stuff &#8212; if you&#8217;re concerned about performance under load, detecting places where your code blocks should be your first order of business.  Here&#8217;s the official documentation on enabling blocking detection. Using signals is kind of appropriate for this sort of functionality, because signals [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=143&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Check out <a href="http://unethicalblogger.com/posts/2010/08/unclog_tubes_blocking_detection_eventlet">R. Tyler&#8217;s post on blocking detection</a> in Eventlet.  It&#8217;s good stuff &#8212; if you&#8217;re concerned about performance under load, detecting places where your code blocks should be your first order of business.  <a href="http://eventlet.net/doc/modules/debug.html#eventlet.debug.hub_blocking_detection">Here&#8217;s the official documentation on enabling blocking detection</a>.</p>
<p>Using signals is kind of appropriate for this sort of functionality, because signals are part of a sorta old-school way of implementing concurrency.  The nice thing about them versus, say, a watchdog thread, is that the Python interpreter really interrupts itself in the middle of whatever it was doing when the signal comes in, so the handler can print the lowest-level line of code that was blocking.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/143/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=143&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/08/30/blocking-detection-article/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>Eventlet 0.9.12 released</title>
		<link>http://blog.eventlet.net/2010/08/20/eventlet-0-9-12-released/</link>
		<comments>http://blog.eventlet.net/2010/08/20/eventlet-0-9-12-released/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 00:37:49 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/2010/08/20/eventlet-0-9-12-released/</guid>
		<description><![CDATA[Hey there, it&#8217;s another release of Eventlet! This is a pretty short changelog, but if you&#8217;re using Eventlet with the Twisted hub, you may wish to look this over (and let me know who you are, by the way, I&#8217;d like to know who&#8217;s out there using Twisted). * Eventlet no longer uses the Twisted [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=142&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Hey there, it&#8217;s another release of Eventlet! This is a pretty short changelog, but if you&#8217;re using Eventlet with the Twisted hub, you may wish to look this over (and let me know who you are, by the way, I&#8217;d like to know who&#8217;s out there using Twisted).</p>
<p>* Eventlet no longer uses the Twisted hub if Twisted is imported &#8212; you must call eventlet.hubs.use_hub(&#8216;twistedr&#8217;) if you want to use it. This prevents strange race conditions for those who want to use both Twisted and Eventlet separately. * Removed circular import in twistedr.py<br />
* Added websocket multi-user chat example<br />
* Not using exec() in green modules anymore.<br />
* eventlet.green.socket now contains all attributes of the stdlib socket module, even those that were left out by bugs.<br />
* Eventlet.wsgi doesn&#8217;t call print anymore, instead uses the logfiles for everything (it used to print exceptions in one place). * Eventlet.wsgi properly closes the connection when an error is raised * Better documentation on eventlet.event.Event.send_exception<br />
* Adding websocket.html to tarball so that you can run the examples without checking out the source</p>
<p>Enjoy!</p>
<p>The MD5 of the tarball is: 96edb9eb4f73863f3d19afb5d5c85854</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=142&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/08/20/eventlet-0-9-12-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>0.9.10 out!</title>
		<link>http://blog.eventlet.net/2010/08/05/0-9-10-out/</link>
		<comments>http://blog.eventlet.net/2010/08/05/0-9-10-out/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 07:03:57 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/2010/08/05/0-9-10-out/</guid>
		<description><![CDATA[This is a stability release. There&#8217;s naught new except for greendns, which is probably not going to affect most people because most people don&#8217;t have dnspython installed already. But you should install it! Because it makes your dns queries non-blocking and snappy. Here&#8217;s the changelog: 0.9.10 ====== * Greendns: if dnspython is installed, Eventlet will [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=135&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is a stability release. There&#8217;s naught new except for greendns, which is probably not going to affect most people because most people don&#8217;t have dnspython installed already. But you should install it! Because it makes your dns queries non-blocking and snappy. Here&#8217;s the changelog:</p>
<p>0.9.10<br />
======<br />
* Greendns: if dnspython is installed, Eventlet will automatically use it to provide non-blocking DNS queries. Set the environment variable &#8216;EVENTLET_NO_GREENDNS&#8217; if you don&#8217;t want greendns but have dnspython installed. * Full test suite passes on Python 2.7.<br />
* Tests no longer depend on simplejson for &gt;2.6.<br />
* Potential-bug fixes in patcher (thanks to Schmir, and thanks to Hudson) * Websockets work with query strings (thanks to mcarter)<br />
* WSGI posthooks that get called after the request completed (thanks to gholt, nice docs, too)<br />
* Blocking detector merged &#8212; use it to detect places where your code is not yielding to the hub for &gt; 1 second (this could use documentation) * tpool.Proxy can wrap callables<br />
* Tweaked Timeout class to do something sensible when True is passed to the constructor</p>
<p>I hope you are having a sensational week!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=135&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/08/05/0-9-10-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>Websocket Draft 76</title>
		<link>http://blog.eventlet.net/2010/06/15/websocket-draft-76/</link>
		<comments>http://blog.eventlet.net/2010/06/15/websocket-draft-76/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 00:20:19 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/?p=132</guid>
		<description><![CDATA[A little more than a month ago, Ian Hickson released draft 76 of the WebSocket protocol, which was unusually incompatible with previous drafts.  Headers in the client upgrade request grew a Sec-Websocket prefix, and there is now an interesting challenge-response computation that needs to be performed on the headers and body.  Caveat Emptor to those [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=132&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A little more than a month ago, Ian Hickson <a href="http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76">released draft 76</a> of the WebSocket protocol, which was unusually incompatible with previous drafts.  Headers in the client upgrade request grew a Sec-Websocket prefix, and there is now an interesting challenge-response computation that needs to be performed on the headers and body.  Caveat Emptor to those who implement draft specifications, I guess!</p>
<p>Thus far, Chrome seems to be the major test browser for WebSockets (though Safari implements them as well), and they <a href="http://blog.chromium.org/2010/06/websocket-protocol-updated.html">switched over to draft 76 a few weeks ago</a>.  So the Chrome betas speak draft 75, and the nightlies speak 76.</p>
<p>Fortunately, it&#8217;s possible to write WebSocket servers that interoperate seamlessly with both versions, by detecting those new Sec-Websocket headers and doing the appropriate handshake for the appropriate version.  Andrew Godwin implemented this logic for Eventlet&#8217;s <a href="http://eventlet.net/doc/modules/websocket.html">websocket module</a>, so you can use it to serve sockets to any browser that&#8217;s out there today.  Find it in the development branch, which you can install by running <code>easy_install eventlet==dev</code>.</p>
<p>We&#8217;ll be keeping a weather eye on the spec as it proceeds.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=132&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/06/15/websocket-draft-76/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>Eventlet 0.9.9 Out</title>
		<link>http://blog.eventlet.net/2010/05/28/0-9-9-out/</link>
		<comments>http://blog.eventlet.net/2010/05/28/0-9-9-out/#comments</comments>
		<pubDate>Fri, 28 May 2010 08:26:06 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/2010/05/28/0-9-9-out/</guid>
		<description><![CDATA[Well, that was a quick turnaround! This release was occasioned by a few patches that came in right after 0.9.8 went out, and also the fact that I raced to upgrade the build machines to psycopg 2.2 and didn&#8217;t notice that it wasn&#8217;t working with 2.0.14. Come on, people, I expected you to keep up [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=129&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Well, that was a quick turnaround! This release was occasioned by a few patches that came in right after 0.9.8 went out, and also the fact that I raced to upgrade the build machines to psycopg 2.2 and didn&#8217;t notice that it wasn&#8217;t working with 2.0.14. Come on, people, I expected you to keep up with the times here. :P</p>
<p>So here&#8217;s the full changelist:</p>
<ul>
<li>A fix for monkeypatching with psycopg versions &lt; 2.2.</li>
<li>Improved support for chunked transfers in wsgi, plus a bunch of tests from schmir (ported from gevent by redbo)</li>
<li>A fix for the twisted hub from Favo Yang</li>
</ul>
<p>Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=129&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/05/28/0-9-9-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>Eventlet 0.9.8 Released</title>
		<link>http://blog.eventlet.net/2010/05/26/eventlet-0-9-8-released/</link>
		<comments>http://blog.eventlet.net/2010/05/26/eventlet-0-9-8-released/#comments</comments>
		<pubDate>Wed, 26 May 2010 01:00:39 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/2010/05/26/eventlet-0-9-8-released/</guid>
		<description><![CDATA[All right! It&#8217;s been a while since our last release, so it&#8217;s a relief to finally get this out there. This is primarily a bugfix release, but there are a few new things in it that might interest you. Support for psycopg v2.2&#8242;s async support, courtesy of Daniele Varrazzo&#8217;s great work. You use it by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=125&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>All right! It&#8217;s been a while since our last release, so it&#8217;s a relief to finally get this out there. This is primarily a bugfix release, but there are a few new things in it that might interest you.</p>
<ul>
<li> Support for psycopg v2.2&#8242;s async support, courtesy of Daniele Varrazzo&#8217;s great work. You use it by calling monkey_patch(psycopg=True).</li>
<li> Websocket support moves to core. This means it&#8217;s easier than ever to use websockets with eventlet.wsgi. It&#8217;s, like, two lines now. Mad props to Ben Ford for providing 100% unit test coverage. <a href="http://eventlet.net/doc/examples.html#websocket-server-example">Check out the example.</a></li>
<li>eventlet.wrap_ssl exists! <a href="http://blog.eventlet.net/2010/02/13/rollback/">We talked about it</a> a while back but never got around to implementing it until now.</li>
</ul>
<p>Give it a go, see how you like it!</p>
<p>Here&#8217;s the full changelog:</p>
<ul>
<li>Support for psycopg2&#8242;s asynchronous mode, from Daniele Varrazzo</li>
<li>websocket module is now part of core Eventlet with 100% unit test coverage thanks to Ben Ford. See its documentation at <a href="http://eventlet.net/doc/modules/websocket.html">http://eventlet.net/doc/modules/websocket.html</a></li>
<li>Added wrap_ssl convenience method, meaning that we truly no longer need api or util modules.</li>
<li>Multiple-reader detection code protects against the common mistake of having multiple greenthreads read from the same socket at the same time, which can be overridden if you know what you&#8217;re doing.</li>
<li>Cleaner monkey_patch API: the &#8220;all&#8221; keyword is no longer necessary.</li>
<li>Pool objects have a more convenient constructor &#8212; no more need to subclass</li>
<li>amajorek&#8217;s reimplementation of GreenPipe</li>
<li>Many bug fixes, major and minor.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=125&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/05/26/eventlet-0-9-8-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>
	</item>
		<item>
		<title>Avro and Eventlet</title>
		<link>http://blog.eventlet.net/2010/05/08/avro-and-eventlet/</link>
		<comments>http://blog.eventlet.net/2010/05/08/avro-and-eventlet/#comments</comments>
		<pubDate>Sat, 08 May 2010 10:32:48 +0000</pubDate>
		<dc:creator>Ryan Williams</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.eventlet.net/?p=120</guid>
		<description><![CDATA[This is a well-written post from R. Tyler Ballance: Eventlet meets Avro RPC in an unlikely (in my opinion) place: WSGI. Instead of building their own transport layer for RPC calls, Avro sits on top of HTTP for its transport layer, POST&#8217;ing binary data to the server and processing the response. Since Avro can sit [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=120&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is a <a href="http://unethicalblogger.com/posts/2010/05/howto_using_avro_eventlet">well-written post from R. Tyler Ballance:</a></p>
<blockquote><p>Eventlet meets Avro RPC in an unlikely (in my opinion) place: WSGI. Instead of building their own transport layer for RPC calls, Avro sits on top of HTTP for its transport layer, POST&#8217;ing binary data to the server and processing the response. Since Avro can sit on top of HTTP, we can use <a href="http://eventlet.net/doc/modules/wsgi.html">eventlet.wsgi</a> for building a fast, simple RPC server.</p></blockquote>
<p>I&#8217;ve never used Avro before, but its supporters seem to really like it.  It seems to have improved upon <a href="http://code.google.com/p/protobuf/">Protocol Buffers</a> (while preceding them chronologically), and has a very efficient wire encoding.</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:0;width:1px;height:1px;">
<p><!-- /#nav --></p>
<div id="sidebar-left" class="sidebar">
<div id="block-block-24" class="block block-block">
<div class="content">
<p><span style="float:left;margin-top:-45px;"><a rel="alternate" href="http://feeds.feedburner.com/UnethicalBlogger">subscribe <img style="border:0 none;vertical-align:middle;" src="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" alt="" /></a></span></p>
</div>
</div>
<div id="block-menu-menu-categories" class="block block-menu">
<h3>Categories</h3>
<div class="content">
<ul class="menu">
<li class="leaf first even"><a title="Apture-related posts" href="http://unethicalblogger.com/blog_categories/apture">Apture</a></li>
<li class="leaf odd"><a title="Posts related to the Cheetah Template engine" href="http://unethicalblogger.com/blog_categories/cheetah">Cheetah</a></li>
<li class="leaf even"><a title="Git-related posts" href="http://unethicalblogger.com/blog_categories/git">Git</a></li>
<li class="leaf odd"><a title="Hudson-related blog posts" href="http://unethicalblogger.com/blog_categories/hudson">Hudson</a></li>
<li class="leaf even"><a title="JavaScript related blog posts" href="http://unethicalblogger.com/blog_categories/javascript">JavaScript</a></li>
<li class="leaf odd"><a href="http://unethicalblogger.com/blog_categories/miscellaneous">Miscellaneous</a></li>
<li class="leaf even"><a href="http://unethicalblogger.com/blog_categories/opinion">Opinion</a></li>
<li class="leaf odd"><a title="Python-related posts" href="http://unethicalblogger.com/blog_categories/python">Python</a></li>
<li class="leaf last even"><a href="http://unethicalblogger.com/blog_categories/software_development">Software Development</a></li>
</ul>
</div>
</div>
<div id="block-aggregator-feed-22" class="block block-aggregator">
<h3>continuous blog</h3>
<div class="content">
<div class="item-list">
<ul>
<li class="first"><a href="http://blog.hudson-ci.org/content/hudson-1355-released">Hudson 1.355 Released</a></li>
<li><a href="http://blog.hudson-ci.org/content/new-blog-kohsuke">A new blog for Kohsuke</a></li>
<li class="last"><a href="http://blog.hudson-ci.org/content/hudson-1354-released">Hudson 1.354 Released</a></li>
</ul>
</div>
<div class="more-link"><a title="View this feed's recent news." href="http://unethicalblogger.com/aggregator/sources/22">more</a></div>
</div>
</div>
<div id="block-feedburner-2" class="block block-feedburner">
<div class="content"><a href="http://feedproxy.google.com/UnethicalBlogger"><img src="http://feedproxy.google.com/%7Efc/UnethicalBlogger?bg=99CCFF&amp;fg=444444&amp;anim=0" alt="" width="88" height="26" /></a></div>
</div>
<div id="block-disqus-disqus_recent_comments" class="block block-disqus">
<h3>Recent Comments</h3>
<div class="content">
<div id="dsq-recentcomments" class="dsq-widget">
<p><!-- 	 .dsq-widget ul.dsq-widget-list {	 padding: 0;	 margin: 0;	 text-align: left;	 }	 img.dsq-widget-avatar {	 width: 24px;	 height: 24px;	 border: 0px;	 margin: 0px;	 padding: 0px 3px 3px 0px;	 float: left;	 }	 a.dsq-widget-user {	 font-weight: bold;	 }	 a.dsq-widget-thread {	 font-weight: bold;	 }	 p.dsq-widget-meta {	 clear: both;	 font-size: 80%;	 padding: 0;	 margin: 0;	 }	 li.dsq-widget-item {	 margin: 15px 0;	 list-style-type: none;	 clear: both;	 }	 span.dsq-widget-clout {	 padding: 0 2px;	 background-color: #ff7300;	 color: #fff;	 }	 table.dsq-widget-horiz td {	 padding-right: 15px;	 }	  --></p>
<ul class="dsq-widget-list">
<li class="dsq-widget-item"> <a href="http://disqus.com/otokiralama22/"><img class="dsq-widget-avatar" src="http://mediacdn.disqus.com/1012/images/noavatar92.png" alt="" /></a> <a class="dsq-widget-user" href="http://disqus.com/otokiralama22/">oto kiralama</a> <span class="dsq-widget-comment">You’ve managed to explain a really tricky subject well. I find that I sometimes have difficulty in getting my head round topics like this, but you’ve summed it up really well. I’ve found another&#8230;</span>
<p class="dsq-widget-meta"><a href="http://unethicalblogger.com/node/54">A Review: The Metamorphosis</a> · <a href="http://unethicalblogger.com/node/54#comment-48656553">1 day ago</a></p>
</li>
<li class="dsq-widget-item"> <a href="http://disqus.com/agentdero/"><img class="dsq-widget-avatar" src="http://media.disqus.com/uploads/users/162/3867/avatar92.jpg?1263654542" alt="" /></a> <a class="dsq-widget-user" href="http://disqus.com/agentdero/">R. Tyler Ballance</a> <span class="dsq-widget-comment">You can consider it public domain for all I care, if there&#8217;s enough interest I can probably create a proper GitHub project for it :)</span>
<p class="dsq-widget-meta"><a href="http://unethicalblogger.com/node/189">Hudson notifications with libnotify</a> · <a href="http://unethicalblogger.com/node/189#comment-47589871">1 week ago</a></p>
</li>
<li class="dsq-widget-item"> <a href="http://disqus.com/guest/9c980de11949d0c22bf00c697a09b1d2/"><img class="dsq-widget-avatar" src="http://media.disqus.com/uploads/anonusers/649/6106/avatar92.jpg" alt="" /></a> <a class="dsq-widget-user dsq-unregistered-user" href="http://disqus.com/guest/9c980de11949d0c22bf00c697a09b1d2/">plinehan</a> <span class="dsq-widget-comment">Great hack.  Thanks!</span>
<p class="dsq-widget-meta"><a href="http://unethicalblogger.com/node/195">Reliable Locks in Hudson</a> · <a href="http://unethicalblogger.com/node/195#comment-47578842">1 week ago</a></p>
</li>
<li class="dsq-widget-item"> <a href="http://disqus.com/guest/3aa870072bd1bc24188409077c50fbc2/"><img class="dsq-widget-avatar" src="http://media.disqus.com/uploads/anonusers/92/4502/avatar92.jpg" alt="" /></a> <a class="dsq-widget-user dsq-unregistered-user" href="http://disqus.com/guest/3aa870072bd1bc24188409077c50fbc2/">alberto</a> <span class="dsq-widget-comment">Can you put a license to this code? I would like to make some improvements to it. :)</span>
<p class="dsq-widget-meta"><a href="http://unethicalblogger.com/node/189">Hudson notifications with libnotify</a> · <a href="http://unethicalblogger.com/node/189#comment-47427836">1 week ago</a></p>
</li>
</ul>
</div>
</div>
</div>
<div id="block-aggregator-feed-18" class="block block-aggregator">
<h3>github activity</h3>
<div class="content">
<div class="item-list">
<ul>
<li class="first"><a href="http://github.com/rtyler/eventlet-avro-example/compare/master">rtyler created branch master at rtyler/eventlet-avro-example</a></li>
<li><a href="http://github.com/rtyler/eventlet-avro-example">rtyler created repository eventlet-avro-example</a></li>
<li><a href="http://github.com/hudson/Hudson-GIT-plugin/commit/43d5a4061c2aa8be38cdc12240095c8b37937ccf#-P0">rtyler commented on hudson/Hudson-GIT-plugin</a></li>
<li><a href="http://github.com/fzzzy">rtyler started following fzzzy</a></li>
<li class="last"><a href="http://github.com/rtyler/Spawning/compare/2a5b288d40...af3a1a80f6">rtyler pushed to master at rtyler/Spawning</a></li>
</ul>
</div>
<div class="more-link"><a title="View this feed's recent news." href="http://unethicalblogger.com/aggregator/sources/18">more</a></div>
</div>
</div>
<div id="block-aggregator-feed-20" class="block block-aggregator">
<h3>youtube activity</h3>
<div class="content">
<div class="item-list">
<ul>
<li class="first last"><span id="apture_prvw8" class="aptureLink "><span class="aptureLinkIcon" style="background-position:right -1548px;"> </span><a class="aptureLink snap_noshots" href="http://www.youtube.com/watch?v=5d-P4j5n_No">Python on Hudson (Part 1)</a></span></li>
</ul>
</div>
<div class="more-link"><a title="View this feed's recent news." href="http://unethicalblogger.com/aggregator/sources/20">more</a></div>
</div>
</div>
<div id="block-aggregator-feed-19" class="block block-aggregator">
<h3>upvoted</h3>
<div class="content">
<div class="item-list">
<ul>
<li class="first"><a href="http://www.reddit.com/r/wikipedia/comments/c0vnf/when_they_demanded_that_he_choose_between_them_he/">&#8230;when they demanded that he choose between them, he told them that they would have to fight it out themselves, at which point the two women began to wrestle. Picasso described it &#8220;as one of his choicest memories&#8221;.</a></li>
<li><a href="http://www.reddit.com/r/space/comments/c0utq/voyager_2_is_experiencing_very_odd_anomalies_at/">Voyager 2 is experiencing very odd anomalies at the edge of the Solar System</a></li>
<li><a href="http://www.reddit.com/r/sanfrancisco/comments/c0pe8/this_is_what_i_think_of_when_i_think_of_the/">This is what I think of when I think of the Mission.</a></li>
<li class="last"><a href="http://www.reddit.com/r/sanfrancisco/comments/c00ab/hundreds_of_sf_felony_convictions_to_be/">Hundreds of SF felony convictions to be potentially overturned as dozens of cops&#8217; prior criminal records were witheld from defense attorneys</a></li>
</ul>
</div>
<div class="more-link"><a title="View this feed's recent news." href="http://unethicalblogger.com/aggregator/sources/19">more</a></div>
</div>
</div>
</div>
<p><!-- /#sidebar-left --></p>
<div id="main">
<div class="breadcrumb"><a href="http://unethicalblogger.com/">Home</a> » <a href="http://unethicalblogger.com/blog">Blogs</a> » <a href="http://unethicalblogger.com/blog/r_tyler_ballance">R. Tyler Ballance&#8217;s blog</a></div>
<h2>How-to: Using Avro with Eventlet</h2>
<div id="node-282" class="node">
<p><span class="submitted">May 7, 2010 &#8211; 8:45am | by <strong>R. Tyler Ballance</strong></span></p>
<div class="content">
<p>Working on the plumbing behind a sufficiently large web application I find myself building services to meet my needs more often than not. Typically I try to build single-purpose services, following in the unix philosophy, cobbling together more complex tools based on a collection of distinct building blocks. In order to connect these services a solid, fast and easy-to-use RPC library is a requirement; enter <a href="http://hadoop.apache.org/avro/">Avro</a>.</p>
<hr /><em>Note:</em> You can skip ahead and just start reading some source code by cloning my <a href="http://github.com/rtyler/eventlet-avro-example">eventlet-avro-example</a> repository from GitHub.</p>
<hr />Avro is part of the Hadoop project and has two primary components, data serialization and RPC support. Some time ago I chose Avro for serializing all of <span id="apture_prvw1" class="aptureLink "><span class="aptureLinkIcon" style="background-position:right -1648px;"> </span><a class="aptureLink snap_noshots" href="http://www.apture.com/">Apture&#8217;s</a></span> metrics and logging information, giving us a standardized framework for recording new events and processing them after the fact. It was not until recently I started to take advantage of Avro&#8217;s RPC support when building services with <span id="apture_prvw5" class="aptureLink "><span class="aptureLinkIcon" style="background-position:right -1648px;"> </span><a class="aptureLink snap_noshots" href="http://eventlet.net/doc/">Eventlet</a></span>. I&#8217;ve talked about Eventlet <a href="http://unethicalblogger.com/posts/2010/01/new_years_python_meme">before</a>, but to recap:</p>
<blockquote><p>Eventlet is a concurrent networking library for Python that allows you to change how you run your code, not how you write it</p></blockquote>
<p>What this means in practice is that you can write highly concurrent network-based services while keeping the code &#8220;synchronous&#8221; and easy to follow. Underneath Eventlet is the &#8220;<span id="apture_prvw6" class="aptureLink "><span class="aptureLinkIcon" style="background-position:right -1648px;"> </span><a class="aptureLink snap_noshots" href="http://pypi.python.org/pypi/greenlet">greenlet</a></span>&#8221; library which implements coroutines for Python, which allows Eventlet to switch between coroutines, or &#8220;green threads&#8221; whenever a network call blocks.</p>
<p>Eventlet meets Avro RPC in an unlikely (in my opinion) place: WSGI. Instead of building their own transport layer for RPC calls, Avro sits on top of HTTP for its transport layer, POST&#8217;ing binary data to the server and processing the response. Since Avro can sit on top of HTTP, we can use <a href="http://eventlet.net/doc/modules/wsgi.html">eventlet.wsgi</a> for building a fast, simple RPC server.</p>
</div>
</div>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventlet.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventlet.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventlet.net&#038;blog=11191771&#038;post=120&#038;subd=eventlet&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventlet.net/2010/05/08/avro-and-eventlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7eb67fd8e9fe0cc93518ef570fe9353c?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">rdw</media:title>
		</media:content>

		<media:content url="http://www.feedburner.com/fb/images/pub/feed-icon16x16.png" medium="image" />

		<media:content url="http://feedproxy.google.com/%7Efc/UnethicalBlogger?bg=99CCFF&#38;fg=444444&#38;anim=0" medium="image" />

		<media:content url="http://mediacdn.disqus.com/1012/images/noavatar92.png" medium="image" />

		<media:content url="http://media.disqus.com/uploads/users/162/3867/avatar92.jpg?1263654542" medium="image" />

		<media:content url="http://media.disqus.com/uploads/anonusers/649/6106/avatar92.jpg" medium="image" />

		<media:content url="http://media.disqus.com/uploads/anonusers/92/4502/avatar92.jpg" medium="image" />
	</item>
	</channel>
</rss>
