fixed cron deadlock on windows, thanks Helko Besemann
This commit is contained in:
+11
-2
@@ -117,6 +117,10 @@ class Token(object):
|
||||
if a cron job started before 60 seconds and did not stop,
|
||||
a warning is issue "Stale cron.master detected"
|
||||
"""
|
||||
if sys.platform == 'win32':
|
||||
locktime = 59.5
|
||||
else:
|
||||
locktime = 59.99
|
||||
if portalocker.LOCK_EX is None:
|
||||
logger.warning('WEB2PY CRON: Disabled because no file locking')
|
||||
return None
|
||||
@@ -128,7 +132,7 @@ class Token(object):
|
||||
(start, stop) = cPickle.load(self.master)
|
||||
except:
|
||||
(start, stop) = (0, 1)
|
||||
if startup or self.now - start > 59.99:
|
||||
if startup or self.now - start > locktime:
|
||||
ret = self.now
|
||||
if not stop:
|
||||
# this happens if previous cron job longer than 1 minute
|
||||
@@ -136,6 +140,7 @@ class Token(object):
|
||||
logger.debug('WEB2PY CRON: Acquiring lock')
|
||||
self.master.seek(0)
|
||||
cPickle.dump((self.now, 0), self.master)
|
||||
self.master.flush()
|
||||
finally:
|
||||
portalocker.unlock(self.master)
|
||||
if not ret:
|
||||
@@ -304,7 +309,11 @@ def crondance(applications_parent, ctype='soft', startup=False, apps=None):
|
||||
for task in tasks:
|
||||
if _cron_stopping:
|
||||
break
|
||||
commands = [sys.executable]
|
||||
if sys.executable.lower().endswith('pythonservice.exe'):
|
||||
_python_exe = os.path.join(sys.exec_prefix, 'python.exe')
|
||||
else:
|
||||
_python_exe = sys.executable
|
||||
commands = [_python_exe]
|
||||
w2p_path = fileutils.abspath('web2py.py', gluon=True)
|
||||
if os.path.exists(w2p_path):
|
||||
commands.append(w2p_path)
|
||||
|
||||
Reference in New Issue
Block a user