Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Executer management command django : vaut-il mieux multiprocessing ou threading ?

+1 vote

Dans une management command, déclenchée depuis une vue pour mettre à jour un trigger, je me demande ce qui est le plus approprié entre mutiprocessing ou la même chose à partir de ce qu'explique kan4r ici sur le Threading
J'ai aussi lu que multiprocessing avait une emprunte mémoire plus importante que Threading par exemple, mais que le threading avec GIL ...
Aussi, dans ma vue pour éviter qu'on soumette une demande de mise à jour plusieurs fois pendant que la 1° requete n'est pas finie, je colle dans un coin du cache qu'une requête est en cours via

cache.set('django_th' + '_fire_trigger_' + trigger_id)

(ce qui explique du coup le cache.delete() à la fin du script ci dessous)

Le code ressemblerait selon le cas à

from multiprocessing import Pool, TimeoutError

ou

from multiprocessing.pool import ThreadPool as Pool, TimeoutError

et continuerait par

def handle(self, *args, **options):
    """
        get the trigger to fire
    """
    trigger_id = options.get('trigger_id')
    trigger = TriggerService.objects.filter(
        id=int(trigger_id),
        status=True,
        user__is_active=True,
    ).select_related('consumer__name', 'provider__name')
    try:
        with Pool(processes=1) as pool:
            result = pool.map_async(reading, trigger)
            result.get(timeout=360)
            result = pool.map_async(publishing, trigger)
            result.get(timeout=360)

            cache.delete('django_th' + '_fire_trigger_' + trigger_id)
    except TimeoutError as e:
        logger.warn(e)
demandé 11-Oct-2016 par foxmask (2,670 points)

Votre réponse

Preview

Votre nom à afficher ( en option ):
Vie privée: . Votre adresse de messagerie ne sera utilisée que pour l'envoi de ces notifications .
Vérification anti -spam:
Pour éviter cette vérification à l'avenir, Connectez vous ou inscrivez vous.
...