2017-02-28 111 views
1

我想通過cron作業來請求多線程中的API。我期待停止或放鬆請求的線程。 這是pserve沒有問題。我想使用uWSGI但我有一些問題。多線程requests.post使用uWSGI,金字塔

的Python 3.5.2

我的代碼是這樣的:

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() 

請讓我知道任何解決方案。

回答

1

UWSGI默認不啓用Python的線程:

默認情況下,Python的插件不初始化GIL。這意味着 您的應用程序生成的線程將不會運行。如果您需要線程,請記住 使用啓用線程啓用它們。在多線程 模式下運行uWSGI(帶有線程選項)將自動啓用線程 支持。這種「奇怪的」默認行爲是出於性能方面的原因, 在這方面毫不慚愧。

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

+0

太謝謝你了。 我試過了,看起來不錯。 >>> [uwsgi] enable-threads = true – terapyon