2017-02-28 1 views
1

J'essaye de demander l'API dans multi threading par le travail de cron. J'ai l'air d'arrêter ou de paresser le fil demandant. Ce n'est pas un problème avec pserve. Je veux utiliser uWSGI mais j'ai un problème.Multi threading requests.post en utilisant uWSGI, Pyramid

Python 3.5.2

Mon code est comme ceci:

import threading 
import requests 

def worker(settings): 
    lookup_url = settings['lookup_url'] 
    api_sid = settings['api_sid'] 
    auth_token = settings['auth_token'] 
    args = settings['args'] 
    resp = requests.post(lookup_url, 
         auth=(api_sid, auth_token), 
         data={'data': args}, 
         timeout=5.0, 
         ) 

def main(request): 
    registry = request.registry 
    settings = registry.settings 
    for _ in range(3): 
     threading.Thread(target=worker, args=(settings,)).start() 

S'il vous plaît laissez-moi savoir des solutions.

Répondre

1

uwsgi ne permet pas de fils Python par défaut:

Par défaut, le plug-in Python n'initialise pas le GIL. Cela signifie que vos threads générés par l'application ne seront pas exécutés. Si vous avez besoin de threads, rappelez-vous pour les activer avec les threads d'activation. L'exécution de uWSGI en mode multithreading (avec les options de threads) activera automatiquement le support . Ce comportement "étrange" par défaut est pour des raisons de performance, pas de honte à cela.

http://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html

+0

Merci beaucoup. J'ai essayé, ça me semble assez bon. >>> [uwsgi] enable-threads = true – terapyon