<?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/"
	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>Comments on: A co-server for Zope</title>
	<atom:link href="http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/feed/" rel="self" type="application/rss+xml" />
	<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/</link>
	<description>Technical blog on Python programming language, in a pure Frenglish style</description>
	<lastBuildDate>Sun, 15 Nov 2009 15:10:13 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Tarek Ziadé</title>
		<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5138</link>
		<dc:creator>Tarek Ziadé</dc:creator>
		<pubDate>Thu, 04 Oct 2007 02:52:21 +0000</pubDate>
		<guid isPermaLink="false">http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5138</guid>
		<description>@Jean-Nicolas Bès:

for the three first questions:

- the task can be a pure python independant function. in this case,
data is prepared, sent to the co-server, then the results are made available for the server to get them.

- the task is Zope dependant. In this case, the task is a generic task
that is called with the coordinates in the ZODB of the real task. This
generic task will know how to open the ZODB, and invoke the real task.
The real task can therefore apply the results directly in the ZODB.
In this case, the task acts a bit like a ZEO client yes. See how ZAsync does.

About the poll:

- each co-server needs to get the jobs by reading the DB yes, 
why this would be a problem ?
- the job scheduling is a set of parameters in the SQL yes, then
each co-server scans the jobs and run them if it&#039;s the right time.

Thanks for you feedback ! 

@Tiberiu: thanks for the extra infos, I need to digg into all those projects

@Jodok: Thanks for the explanation. If I get it well, you run the tasks in a separate process that is created from Zope itself. This means that Zope is responsible for task launching and managing, which is a choice. I want a separated task service for the reasons I mentioned, but i guess lovely.remotetask will fit for &quot;normal&quot; usages.</description>
		<content:encoded><![CDATA[<p>@Jean-Nicolas Bès:</p>
<p>for the three first questions:</p>
<p>- the task can be a pure python independant function. in this case,<br />
data is prepared, sent to the co-server, then the results are made available for the server to get them.</p>
<p>- the task is Zope dependant. In this case, the task is a generic task<br />
that is called with the coordinates in the ZODB of the real task. This<br />
generic task will know how to open the ZODB, and invoke the real task.<br />
The real task can therefore apply the results directly in the ZODB.<br />
In this case, the task acts a bit like a ZEO client yes. See how ZAsync does.</p>
<p>About the poll:</p>
<p>- each co-server needs to get the jobs by reading the DB yes,<br />
why this would be a problem ?<br />
- the job scheduling is a set of parameters in the SQL yes, then<br />
each co-server scans the jobs and run them if it&#8217;s the right time.</p>
<p>Thanks for you feedback ! </p>
<p>@Tiberiu: thanks for the extra infos, I need to digg into all those projects</p>
<p>@Jodok: Thanks for the explanation. If I get it well, you run the tasks in a separate process that is created from Zope itself. This means that Zope is responsible for task launching and managing, which is a choice. I want a separated task service for the reasons I mentioned, but i guess lovely.remotetask will fit for &#8220;normal&#8221; usages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jodok</title>
		<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5119</link>
		<dc:creator>Jodok</dc:creator>
		<pubDate>Tue, 02 Oct 2007 20:42:30 +0000</pubDate>
		<guid isPermaLink="false">http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5119</guid>
		<description>oops :) forget the last two sentences - they were below my scrollback</description>
		<content:encoded><![CDATA[<p>oops <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  forget the last two sentences &#8211; they were below my scrollback</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jodok</title>
		<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5118</link>
		<dc:creator>Jodok</dc:creator>
		<pubDate>Tue, 02 Oct 2007 20:41:37 +0000</pubDate>
		<guid isPermaLink="false">http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5118</guid>
		<description>hi tarek,
it took 4 days until i read your blog post :) but here&#039;s my feedback...
probably there is a misunderstanding about using XML-RPC... we don&#039;t use  XML-RPC to create remotetasks. you _can_ use xml-rpc to create remotetask (by creating a xmlrpc view that is generating it).
if you take a look at the readme (http://tinyurl.com/33xyga) you simply create a remotetask utility and create a task object.

the second issue - deploying an entire zope instance - that&#039;s not necessary as well. lovely.remotetask spawns own processes for the taskservice - the tasks itself are beeing processed by creating a BaseRequest and using the publisher (publisher.publish). that means that you can use that instance for &quot;normal&quot; operation as well.
btw. in our setups we find that the remotetask instance has much more load than the other servers... :)

last thing - storage: the tasks itself are really small. if you process several thousand tasks per day it&#039;s absolutely no problem to store them in zodb. we&#039;re using zc.queue to store the queues on the zeo server. if the python packages of zc.queue and it&#039;s objects are available on the zeo server as well - it will even do conflict resolution on the zeo server itself...

to be honest - i don&#039;t want to switch to a sql-base remotetask service :)

for small installations it&#039;s definitely an overkill to have dedicated instances for remotetasks

first of all</description>
		<content:encoded><![CDATA[<p>hi tarek,<br />
it took 4 days until i read your blog post <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  but here&#8217;s my feedback&#8230;<br />
probably there is a misunderstanding about using XML-RPC&#8230; we don&#8217;t use  XML-RPC to create remotetasks. you _can_ use xml-rpc to create remotetask (by creating a xmlrpc view that is generating it).<br />
if you take a look at the readme (<a href="http://tinyurl.com/33xyga" rel="nofollow">http://tinyurl.com/33xyga</a>) you simply create a remotetask utility and create a task object.</p>
<p>the second issue &#8211; deploying an entire zope instance &#8211; that&#8217;s not necessary as well. lovely.remotetask spawns own processes for the taskservice &#8211; the tasks itself are beeing processed by creating a BaseRequest and using the publisher (publisher.publish). that means that you can use that instance for &#8220;normal&#8221; operation as well.<br />
btw. in our setups we find that the remotetask instance has much more load than the other servers&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>last thing &#8211; storage: the tasks itself are really small. if you process several thousand tasks per day it&#8217;s absolutely no problem to store them in zodb. we&#8217;re using zc.queue to store the queues on the zeo server. if the python packages of zc.queue and it&#8217;s objects are available on the zeo server as well &#8211; it will even do conflict resolution on the zeo server itself&#8230;</p>
<p>to be honest &#8211; i don&#8217;t want to switch to a sql-base remotetask service <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>for small installations it&#8217;s definitely an overkill to have dedicated instances for remotetasks</p>
<p>first of all</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tiberiu Ichim</title>
		<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5111</link>
		<dc:creator>Tiberiu Ichim</dc:creator>
		<pubDate>Tue, 02 Oct 2007 12:09:57 +0000</pubDate>
		<guid isPermaLink="false">http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5111</guid>
		<description>I haven&#039;t used Hadoop, just read an article and a description on how to interact with python software
http://www.michael-noll.com/wiki/Writing_An_Hadoop_MapReduce_Program_In_Python

I can also think of some other ways to integrate external &quot;dumb&quot; applications with zope: for example, integrating them with an intelligent message passing system, such as Cabochon or ActiveMQ 

As for real, personal experience with such a design, I&#039;ve only worked with lovely.remotetask, but keep an eye on the alternatives.

http://www.openplans.org/projects/cabochon
http://activemq.apache.org/index.html</description>
		<content:encoded><![CDATA[<p>I haven&#8217;t used Hadoop, just read an article and a description on how to interact with python software<br />
<a href="http://www.michael-noll.com/wiki/Writing_An_Hadoop_MapReduce_Program_In_Python" rel="nofollow">http://www.michael-noll.com/wiki/Writing_An_Hadoop_MapReduce_Program_In_Python</a></p>
<p>I can also think of some other ways to integrate external &#8220;dumb&#8221; applications with zope: for example, integrating them with an intelligent message passing system, such as Cabochon or ActiveMQ </p>
<p>As for real, personal experience with such a design, I&#8217;ve only worked with lovely.remotetask, but keep an eye on the alternatives.</p>
<p><a href="http://www.openplans.org/projects/cabochon" rel="nofollow">http://www.openplans.org/projects/cabochon</a><br />
<a href="http://activemq.apache.org/index.html" rel="nofollow">http://activemq.apache.org/index.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Nicolas Bès</title>
		<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5097</link>
		<dc:creator>Jean-Nicolas Bès</dc:creator>
		<pubDate>Mon, 01 Oct 2007 13:38:31 +0000</pubDate>
		<guid isPermaLink="false">http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5097</guid>
		<description>I like your &quot;perfect&quot; co-server design. I basically thought of something similar, but I have some questions that stay unanswered :
 - From the co-server pov. What should we do about tasks input and output?
 - From the ZODB pov. Who is reponsible for getting/putting data from/to ZODB?
 - Could we imagine the co-server being a ZEO client where needed?
 - Are the co-servers supposed to poll the SQL database for new jobs? (Main problem of a SQLdb-centric design IMHO)
 - Where could we implement a specific task scheduling? Statically in the sqldb python API, letting the tasks consumer pick the right task?

Anyway, thanks a lot for this little &quot;state of the art&quot; on co-servers.</description>
		<content:encoded><![CDATA[<p>I like your &#8220;perfect&#8221; co-server design. I basically thought of something similar, but I have some questions that stay unanswered :<br />
 &#8211; From the co-server pov. What should we do about tasks input and output?<br />
 &#8211; From the ZODB pov. Who is reponsible for getting/putting data from/to ZODB?<br />
 &#8211; Could we imagine the co-server being a ZEO client where needed?<br />
 &#8211; Are the co-servers supposed to poll the SQL database for new jobs? (Main problem of a SQLdb-centric design IMHO)<br />
 &#8211; Where could we implement a specific task scheduling? Statically in the sqldb python API, letting the tasks consumer pick the right task?</p>
<p>Anyway, thanks a lot for this little &#8220;state of the art&#8221; on co-servers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tarek Ziadé</title>
		<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5094</link>
		<dc:creator>Tarek Ziadé</dc:creator>
		<pubDate>Sun, 30 Sep 2007 17:52:39 +0000</pubDate>
		<guid isPermaLink="false">http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5094</guid>
		<description>@Tiberiu : very interested, I didn&#039;t know about it, have you tried it ?</description>
		<content:encoded><![CDATA[<p>@Tiberiu : very interested, I didn&#8217;t know about it, have you tried it ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tiberiu Ichim</title>
		<link>http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5093</link>
		<dc:creator>Tiberiu Ichim</dc:creator>
		<pubDate>Sun, 30 Sep 2007 16:37:23 +0000</pubDate>
		<guid isPermaLink="false">http://tarekziade.wordpress.com/2007/09/28/a-co-server-for-zope/#comment-5093</guid>
		<description>Hadoop looks also very interesting as  a potential Zope co-server. Though you&#039;re probably already familiar with it. http://lucene.apache.org/hadoop/</description>
		<content:encoded><![CDATA[<p>Hadoop looks also very interesting as  a potential Zope co-server. Though you&#8217;re probably already familiar with it. <a href="http://lucene.apache.org/hadoop/" rel="nofollow">http://lucene.apache.org/hadoop/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
