多线程requests.post使用uWSGI,金字塔
问题描述:
我想通过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()
请让我知道任何解决方案。
答
UWSGI默认不启用Python的线程:
默认情况下,Python的插件不初始化GIL。这意味着 您的应用程序生成的线程将不会运行。如果您需要线程,请记住 使用启用线程启用它们。在多线程 模式下运行uWSGI(带有线程选项)将自动启用线程 支持。这种“奇怪的”默认行为是出于性能方面的原因, 在这方面毫不惭愧。
http://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
太谢谢你了。 我试过了,看起来不错。 >>> [uwsgi] enable-threads = true – terapyon