<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Emulating a long-running process (and a scheduler) in Google App Engine</title>
	<atom:link href="http://stage.vambenepe.com/archives/209/feed" rel="self" type="application/rss+xml" />
	<link>http://stage.vambenepe.com/archives/209</link>
	<description>IT management in a changing IT world</description>
	<lastBuildDate>Wed, 17 Mar 2010 19:31:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: William Vambenepe &#8212; PaaS as a satisfying and success-ready hobbyist plaform</title>
		<link>http://stage.vambenepe.com/archives/209#comment-93426</link>
		<dc:creator>William Vambenepe &#8212; PaaS as a satisfying and success-ready hobbyist plaform</dc:creator>
		<pubDate>Thu, 01 Oct 2009 05:47:12 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-93426</guid>
		<description>[...] at the cost of too many longer-term limitations (now that the environment has gown a bit from the original limitations and provides scheduled and background jobs). Unlike Yahoo Pipes, for which the first impression is [...]</description>
		<content:encoded><![CDATA[<p>[...] at the cost of too many longer-term limitations (now that the environment has gown a bit from the original limitations and provides scheduled and background jobs). Unlike Yahoo Pipes, for which the first impression is [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Long-running processes on Google App Engine: it finally works</title>
		<link>http://stage.vambenepe.com/archives/209#comment-62102</link>
		<dc:creator>William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Long-running processes on Google App Engine: it finally works</dc:creator>
		<pubDate>Fri, 13 Feb 2009 17:14:51 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-62102</guid>
		<description>[...] Requests&#8221; that quickly result in your application being disabled. It&#8217;s all explained here and  [...]</description>
		<content:encoded><![CDATA[<p>[...] Requests&#8221; that quickly result in your application being disabled. It&#8217;s all explained here and  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Google App Engine is teasing me</title>
		<link>http://stage.vambenepe.com/archives/209#comment-62006</link>
		<dc:creator>William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Google App Engine is teasing me</dc:creator>
		<pubDate>Thu, 12 Feb 2009 07:21:46 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-62006</guid>
		<description>[...] finally going to be able to use timeouts on outgoing HTTP requests. I care about this because my earlier attempt to emulate a long-running process in GAE was stymied by the GAE quota system, something I think I can work around if I can timeout a request [...]</description>
		<content:encoded><![CDATA[<p>[...] finally going to be able to use timeouts on outgoing HTTP requests. I care about this because my earlier attempt to emulate a long-running process in GAE was stymied by the GAE quota system, something I think I can work around if I can timeout a request [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Now I know why GAE has been killing me</title>
		<link>http://stage.vambenepe.com/archives/209#comment-56666</link>
		<dc:creator>William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Now I know why GAE has been killing me</dc:creator>
		<pubDate>Wed, 17 Dec 2008 07:37:08 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-56666</guid>
		<description>[...] on GAE today because the Google team just published a blog entry that explains why my attempts to create a long-running process in GAE resulted in my application being disabled for having too many &#8220;high CPU requests&#8221;, a [...]</description>
		<content:encoded><![CDATA[<p>[...] on GAE today because the Google team just published a blog entry that explains why my attempts to create a long-running process in GAE resulted in my application being disabled for having too many &#8220;high CPU requests&#8221;, a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Google App Engine limitations, and how to get around them &#124; Digitalistic - Mashup or die trying</title>
		<link>http://stage.vambenepe.com/archives/209#comment-51338</link>
		<dc:creator>Google App Engine limitations, and how to get around them &#124; Digitalistic - Mashup or die trying</dc:creator>
		<pubDate>Tue, 16 Sep 2008 13:40:48 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-51338</guid>
		<description>[...] about this in William Vambenepe&#8217;s very informative post Emulating a long-running process (and a scheduler) in Google App Engine. He has some tips on how to get around this limitation, even if it is not recommended since you [...]</description>
		<content:encoded><![CDATA[<p>[...] about this in William Vambenepe&#8217;s very informative post Emulating a long-running process (and a scheduler) in Google App Engine. He has some tips on how to get around this limitation, even if it is not recommended since you [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mashup.se &#187; Google App Engine, del 4: Begränsningar och hur man tar sig runt dem</title>
		<link>http://stage.vambenepe.com/archives/209#comment-50649</link>
		<dc:creator>Mashup.se &#187; Google App Engine, del 4: Begränsningar och hur man tar sig runt dem</dc:creator>
		<pubDate>Fri, 05 Sep 2008 08:41:37 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-50649</guid>
		<description>[...] om detta kan ni hitta på William Vambenepe&#8217;s mycket informativa blogginlägg Emulating a long-running process (and a scheduler) in Google App Engine. Han har några tips på hur man kan försöka ta sig förbi denna begränsning, även om det inte [...]</description>
		<content:encoded><![CDATA[<p>[...] om detta kan ni hitta på William Vambenepe&#8217;s mycket informativa blogginlägg Emulating a long-running process (and a scheduler) in Google App Engine. Han har några tips på hur man kan försöka ta sig förbi denna begränsning, även om det inte [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe</title>
		<link>http://stage.vambenepe.com/archives/209#comment-49929</link>
		<dc:creator>William Vambenepe</dc:creator>
		<pubDate>Thu, 28 Aug 2008 20:10:21 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-49929</guid>
		<description>Yes. That&#039;s the result of my attempt: there are some things you can use for a short period but nothing that&#039;s functional in any practical way.</description>
		<content:encoded><![CDATA[<p>Yes. That&#8217;s the result of my attempt: there are some things you can use for a short period but nothing that&#8217;s functional in any practical way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Bilyk</title>
		<link>http://stage.vambenepe.com/archives/209#comment-49920</link>
		<dc:creator>Andrew Bilyk</dc:creator>
		<pubDate>Thu, 28 Aug 2008 16:02:30 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-49920</guid>
		<description>Thank you for answer. Just to be shure, I can&#039;t implement described functionality with standard GAE Developers Tools. Am I right?</description>
		<content:encoded><![CDATA[<p>Thank you for answer. Just to be shure, I can&#8217;t implement described functionality with standard GAE Developers Tools. Am I right?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe</title>
		<link>http://stage.vambenepe.com/archives/209#comment-49918</link>
		<dc:creator>William Vambenepe</dc:creator>
		<pubDate>Thu, 28 Aug 2008 15:42:57 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-49918</guid>
		<description>Sorry Andrew, I don&#039;t know of a GAE-provided cron service. There are such services out there that you can use to invoke your GAE app once a while though.</description>
		<content:encoded><![CDATA[<p>Sorry Andrew, I don&#8217;t know of a GAE-provided cron service. There are such services out there that you can use to invoke your GAE app once a while though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Bilyk</title>
		<link>http://stage.vambenepe.com/archives/209#comment-49916</link>
		<dc:creator>Andrew Bilyk</dc:creator>
		<pubDate>Thu, 28 Aug 2008 14:54:50 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-49916</guid>
		<description>Hello. Please help me with a next problem. I need to implement functionality of testing some urls (currently get response code only) and the problem is that I need to run this test each 10-15 seconds. Can I provide this with Google App Engine somehow? May be GAE has some services? I have read somewhere about Cron and Commet GAE services but have&#039;t found any examples.
Thank you.</description>
		<content:encoded><![CDATA[<p>Hello. Please help me with a next problem. I need to implement functionality of testing some urls (currently get response code only) and the problem is that I need to run this test each 10-15 seconds. Can I provide this with Google App Engine somehow? May be GAE has some services? I have read somewhere about Cron and Commet GAE services but have&#8217;t found any examples.<br />
Thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe</title>
		<link>http://stage.vambenepe.com/archives/209#comment-46015</link>
		<dc:creator>William Vambenepe</dc:creator>
		<pubDate>Wed, 25 Jun 2008 07:05:22 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-46015</guid>
		<description>Yiqiang,

Not sure I understand the question. If this is what you are asking, yes it is possible for an app to call itself. The problem is that once this is done the calling instance of the app has to hang and wait for the response to come back. It can&#039;t just call itself and let the old instance die. The old instance dies eventually (killed by GAE environment after approx 9 seconds) but it is marked as having used to much CPU (even though in fact it is a clock time metric, not a CPU time metric). And eventually your app gets killed for that. That&#039;s what I described in the earlier blog entry (&lt;a href=&quot;http://stage.vambenepe.com/archives/207&quot; rel=&quot;nofollow&quot;&gt;http://stage.vambenepe.com/archives/207&lt;/a&gt;)</description>
		<content:encoded><![CDATA[<p>Yiqiang,</p>
<p>Not sure I understand the question. If this is what you are asking, yes it is possible for an app to call itself. The problem is that once this is done the calling instance of the app has to hang and wait for the response to come back. It can&#8217;t just call itself and let the old instance die. The old instance dies eventually (killed by GAE environment after approx 9 seconds) but it is marked as having used to much CPU (even though in fact it is a clock time metric, not a CPU time metric). And eventually your app gets killed for that. That&#8217;s what I described in the earlier blog entry (<a href="http://stage.vambenepe.com/archives/207" rel="nofollow">http://stage.vambenepe.com/archives/207</a>)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yiqiang</title>
		<link>http://stage.vambenepe.com/archives/209#comment-46014</link>
		<dc:creator>Yiqiang</dc:creator>
		<pubDate>Wed, 25 Jun 2008 06:59:10 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-46014</guid>
		<description>I am also trying to a long time running app. Is it possible to fetch the app by itself to make it running in a long time?</description>
		<content:encoded><![CDATA[<p>I am also trying to a long time running app. Is it possible to fetch the app by itself to make it running in a long time?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Some breathing room for Google App Engine requests</title>
		<link>http://stage.vambenepe.com/archives/209#comment-45452</link>
		<dc:creator>William Vambenepe&#8217;s blog &#187; Blog Archive &#187; Some breathing room for Google App Engine requests</dc:creator>
		<pubDate>Fri, 13 Jun 2008 08:16:04 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-45452</guid>
		<description>[...] promised to Felix here is the code that shows how to give extra breathing room to Google App Engine (GAE) requests [...]</description>
		<content:encoded><![CDATA[<p>[...] promised to Felix here is the code that shows how to give extra breathing room to Google App Engine (GAE) requests [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Vambenepe</title>
		<link>http://stage.vambenepe.com/archives/209#comment-45430</link>
		<dc:creator>William Vambenepe</dc:creator>
		<pubDate>Thu, 12 Jun 2008 16:47:17 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-45430</guid>
		<description>Yes and in fact I wrote another prototype that does just that. This time I was going after another use case. Rather than trying to simulate a long-running process, I was simply trying to solve the problem of having too many user requests fail because they take too long to execute. By using a redirect in the same manner you suggest, I allowed the request to spread its work over several invocations thus getting several 9 seconds slots (since this seems to be how much time GAE gives you per request right now). In theory it could go on for ever, but in practice, as I&#039;ve reported in the blog post above, you get killed after a few minutes. But if you have an app that usually returns within one invocation but runs out of time say 10% of the time, this approach can make it a lot more robust and is potentially sustainable (you don&#039;t encounter the wrath of the GAE resource cop if most of you requests complete fast enough). It&#039;s a bit like giving kids w/ ADHD extra time for school exams, except this time you give requests with special needs extra CPU time to complete.

Since you inquired about this, I&#039;ll post the code for that prototype when I get home tonight.

[UPDATED 2008/6/13: &lt;a href=&quot;http://stage.vambenepe.com/archives/213&quot; rel=&quot;nofollow&quot;&gt;Done&lt;/a&gt;.]</description>
		<content:encoded><![CDATA[<p>Yes and in fact I wrote another prototype that does just that. This time I was going after another use case. Rather than trying to simulate a long-running process, I was simply trying to solve the problem of having too many user requests fail because they take too long to execute. By using a redirect in the same manner you suggest, I allowed the request to spread its work over several invocations thus getting several 9 seconds slots (since this seems to be how much time GAE gives you per request right now). In theory it could go on for ever, but in practice, as I&#8217;ve reported in the blog post above, you get killed after a few minutes. But if you have an app that usually returns within one invocation but runs out of time say 10% of the time, this approach can make it a lot more robust and is potentially sustainable (you don&#8217;t encounter the wrath of the GAE resource cop if most of you requests complete fast enough). It&#8217;s a bit like giving kids w/ ADHD extra time for school exams, except this time you give requests with special needs extra CPU time to complete.</p>
<p>Since you inquired about this, I&#8217;ll post the code for that prototype when I get home tonight.</p>
<p>[UPDATED 2008/6/13: <a href="http://stage.vambenepe.com/archives/213" rel="nofollow">Done</a>.]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: felix</title>
		<link>http://stage.vambenepe.com/archives/209#comment-45427</link>
		<dc:creator>felix</dc:creator>
		<pubDate>Thu, 12 Jun 2008 14:25:54 +0000</pubDate>
		<guid isPermaLink="false">http://stage.vambenepe.com/?p=209#comment-45427</guid>
		<description>I&#039;ve been trying to tackle this problem myself! Your solution is quite interesting, I&#039;m wondering if a modification to it might work - instead of using urlfetch to grab another one and letting the originals be killed, what if you used a simple location redirect, so you&#039;d have to have your browser open the whole time, but you could watch your progress in the url bar and can easily stop the process by closing the tab. Hmm....

Also, you can delete a whole application? I can&#039;t figure out how to do this, when I try to hit the delete button it pops a message that says it can&#039;t delete the default version. I would very much love an easy way to delete an app, or at least delete it&#039;s datastore.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been trying to tackle this problem myself! Your solution is quite interesting, I&#8217;m wondering if a modification to it might work &#8211; instead of using urlfetch to grab another one and letting the originals be killed, what if you used a simple location redirect, so you&#8217;d have to have your browser open the whole time, but you could watch your progress in the url bar and can easily stop the process by closing the tab. Hmm&#8230;.</p>
<p>Also, you can delete a whole application? I can&#8217;t figure out how to do this, when I try to hit the delete button it pops a message that says it can&#8217;t delete the default version. I would very much love an easy way to delete an app, or at least delete it&#8217;s datastore.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
