使用uWSGI,Pyramid的多线程请求.post

时间:2017-02-28 11:34:15

标签: multithreading python-requests pyramid uwsgi

我试图通过cron job在多线程中请求API。我想停止或懒散请求的线程。 pserve没问题。我想使用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 个答案:

答案 0 :(得分:1)

UWSGI默认情况下不启用Python线程:

  

默认情况下,Python插件不会初始化GIL。这意味着   你的应用程序生成的线程将无法运行。如果你需要线程,请记住   使用enable-threads启用它们。在多线程中运行uWSGI   mode(带有线程选项)将自动启用线程   支持。这种“奇怪的”默认行为是出于性能原因,   没有羞耻。

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