hi, my experiences with XRON are bad, so I won't use XRON in a production-environment again. It doesn't work reliable and can crash your ZOPE [sometimes it ran crazy and loaded my system to 100%. Restarting ZOPE did not help, only removing the XRON-Product]. Redesign your problem and use a simple os-cron-job calling your script regularly with Client.py / curl / wget etc. instead. cheers, maik George Stroussopoulos wrote:
Hi. I have been using Xron 0.0.10 inside Zope 251. I have a problem in xrondtml method. It seems that when i schedule a xron event to run at a specific time, it runs but it fails to reschedule itself for the next run. It always fails to rescedule and disarms the xron (time goes to 1970 [datetime(0) not in eventtime + reschedule interval] [the method i call with xron runs correctly]. I use xron in several parts of my code.
It works fine in a part of code [it manages correctly to reschedule itself] but when i am trying to trigger it manually i get the message to download it.In other part of code it works only manually an not in the background procedure. Below is a part of the code to help you: I use xron inside a class called AllChannelsFolder. In the init method i wrote: def __init__(self, id, title, description,proxy_server_url, theContainer): """ Acquire the parent properties """ self = self.__of__(theContainer) self.id = id self.title = title self.description = description self.proxy_server_url = proxy_server_url self.discoveryExecuteAt=DateTime()+1.0 # initial value is tomorrow self.discoveryPeriodDays=0.0 #Initialise the periodic discovery event newEventId=id+'_XronDTMLMethod' newEventTitle=title+' Discovery method (using Xron)' discoverFile='<dtml-call expr="this().findAllChannels(REQUEST)">' newEvent=XronDTMLMethod(newEventId, newEventTitle, discoverFile, self.discoveryExecuteAt, self.discoveryPeriodDays) self._setObject(newEventId, newEvent) self.discoverXronDTMLMethod=newEvent Inside the findAllChannels method that xron calls : ... in the end of code i have this: if REQUEST is not None: try: u=self.absolute_url() except: # Log the catched exception # logExc(__name__, TRACE, MSG_URL_COMPUTING_EXC) if rfind(REQUEST['URL']) == -1: # We are in the manage_trigger() or in the trigger() method of the Xron contained object # Redirect to portal URL, i.e. URL2 u=REQUEST['URL2'] else: # We were called from the Discover tab => use URL1 for redirection u=REQUEST['URL1'] u2=u+'/manage_workspace' REQUEST.RESPONSE.redirect(u2) return self.loadingError The above code works fine when i schedule it, but it does not work with the manually way[trigger]. In the following code i use xron in a class named PortalFolder: the init method is basiclly the same: def __init__(self, id, title, description,theContainer, proxy_server_url=''): """ Constructor """ self = self.__of__(theContainer) self.id = id self.title = title self.description = description self.discoveryExecuteAt=DateTime()+1.0 # initial value is tomorrow self.discoveryPeriodDays=0.0 # Initialise the periodic discovery event newEventId=id+'_XronDTMLMethod' newEventTitle=title+' Discovery method (using Xron)' discoverFile='<dtml-call expr="this().discover(REQUEST)">' newEvent=XronDTMLMethod(newEventId, newEventTitle, discoverFile, self.discoveryExecuteAt, self.discoveryPeriodDays) self._setObject(newEventId, newEvent) self.discoverXronDTMLMethod=newEvent self.proxy_server_url=proxy_server_url the discover method that xron calls has in the end i have: if REQUEST is not None: try: u=self.absolute_url() except: #u=REQUEST['URL1'] logExc(__name__, TRACE, MSG_URL_COMPUTING_EXC) if rfind(REQUEST['URL']) == -1: u=REQUEST['URL2'] else: u=REQUEST['URL1'] u2=u+'/manage_workspace' REQUEST.RESPONSE.redirect(u2) return theResult The method discover runs ok but xron now fails to reschedule itself. It throws this : 2002-08-06T07:20:42 PROBLEM(100) Products.Xron.Loggerr Trigger event: http://exterminator:8082/Tests/CPM_V2/Portals/Portals_XronDTMLMethod Trigger time: 2002/08/06 10:20:40 GMT+3 Failed to trigger event. Type=bci.ServerError Val=302 (File: Unknown Line: Unknown) 302 Moved Temporarily for http://exterminator:8082/Tests/CPM_V2/Portals/Portals_XronDTMLMethod/trigger
------ 2002-08-06T07:20:42 PROBLEM(100) Products.Xron.Loggerr Disarmed event
[Note: I have setup permissions with proxy roles.]
Can anyone help me? Am i missing something? Any help and suggestion could be usefull! I hope i made clear myself.
Thanks in advance.