workflows: make it possible to alter jump timeout check frequency (#12782)

Via the WCS_JUMP_TIMEOUT_CHECKS environement variable.
This commit is contained in:
Frédéric Péters 2016-08-01 10:33:09 +02:00
parent 8c6bd68a76
commit ced4feb552
2 changed files with 67 additions and 5 deletions

59
help/fr/settings-env.page Normal file
View File

@ -0,0 +1,59 @@
<page xmlns="http://projectmallard.org/1.0/"
type="topic" id="settings-env" xml:lang="fr">
<info>
<link type="guide" xref="index#system-settings" />
<revision docversion="0.1" date="2016-08-01" status="draft"/>
<credit type="author">
<name>Frédéric Péters</name>
<email>fpeters@entrouvert.com</email>
</credit>
<desc>Quelques options</desc>
</info>
<title>Variables d'environnement</title>
<p>
La majeure partie du paramétrage est accessible via les écrans de paramétrage
ou via le fichier <code>site-options.cfg</code>; pour faciliter le travail de
configuration quand il s'agit d'informations proches de l'administration
système, il existe également la possibilité d'utiliser des variables
d'environnement.
</p>
<section>
<title>Redirection des emails</title>
<p>
Accessible dans l'écran de paramétrage des options de debug, il est
aussi possible de forcer les emails générés par la plateforme à être
envoyés vers une adresse unique, en positionnant la variable
d'environnement <code>QOMMON_MAIL_REDIRECTION</code>.
</p>
</section>
<section>
<title>Accès au serveur Sentry</title>
<p>
Également accessible depuis l'écran de paramétrage des options de debug, l'adresse (DSN) du serveur Sentry, pour la notification des erreurs
applicatives, peut aussi être placée dans la variable d'environnement
<code>SENTRY_DSN</code>.
</p>
</section>
<section>
<title>Fréquence de vérification des expirations des sauts</title>
<p>
Par défaut les sauts de workflow sont évalués trois fois par heure, toutes
les vingt minutes. Il est possible de définir une autre fréquence dans la
variable d'environnement <code>WCS_JUMP_TIMEOUT_CHECKS</code>. Cette
variable doit contenir le nombre de vérifications à réaliser par heure, le
maximum est d'une vérification toutes les minutes (i.e.
<code>WCS_JUMP_TIMEOUT_CHECKS=60</code>).
</p>
</section>
</page>

View File

@ -15,6 +15,7 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>.
import json
import os
import sys
from quixote import get_publisher, get_request, redirect
@ -29,6 +30,8 @@ from qommon.cron import CronJob
from wcs.workflows import Workflow, WorkflowStatusJumpItem, register_item_class
from wcs.api import get_user_from_api_query_string, is_url_signed
JUMP_TIMEOUT_INTERVAL = max((60 // int(os.environ.get('WCS_JUMP_TIMEOUT_CHECKS', '3')), 1))
def jump_and_perform(formdata, status, workflow_data=None):
if workflow_data:
formdata.update_workflow_data(workflow_data)
@ -98,8 +101,7 @@ class JumpWorkflowStatusItem(WorkflowStatusJumpItem):
condition = None
trigger = None
timeout = None
_granularity = 20 * 60
# default: 20 minutes, see definition of cronjob at the end of the file
_granularity = JUMP_TIMEOUT_INTERVAL * 60
directory_name = 'jump'
directory_class = JumpDirectory
@ -276,7 +278,8 @@ def _apply_timeouts(publisher):
break
if get_publisher_class():
# every 20 minutes check for expired status jump timeouts. If you change
# cronjob schedule, change also the granularity variable
# every JUMP_TIMEOUT_INTERVAL minutes check for expired status jump
# timeouts.
get_publisher_class().register_cronjob(
CronJob(_apply_timeouts, hours=range(24), minutes=range(0, 60, 20)))
CronJob(_apply_timeouts,
hours=range(24), minutes=range(0, 60, JUMP_TIMEOUT_INTERVAL)))