我有一个Web服务,可以使用地理要素创建图像,并使用django框架将其返回到地图。这是一个平铺地图服务(TMS)
通过以下网址调用网络服务:http://host.com/TMS/map_id/x/y/z.png其中map_id,x,y和z是用于生成图像的变量。
此url调用python函数,该函数返回地图客户端(OpenLayers)中的图像。在地图中移动时,用户会在此网络服务上调用一堆请求,例如http://host.com/tiling/1/0/1/1.png,http://host.com/tiling/1/1/0/1.png等
我想使用eventlet来线程化这个web服务的功能,以便并行生成图像,而不是一次生成图像。
有人可以通过提供关于如何监听特定网址(TMS网址)的提示以及如何在该功能上启动线程来帮助我这样做。非常感谢。
答案 0 :(得分:2)
在Eventlet邮件列表上复制相同的线程:
最简单的方法是将后端服务器更改为gunicorn或者spawning或eventlet.wsgi。
所有这些人(可能还有其他人)都能够在一个单独的绿色线程中为每个连接或请求提供服务。
请注意,如果请求处理受CPU限制,则绿色线程无效。
如何在eventlet.wsgi服务器下运行Django?
Django并不特别,它是1.4以来的常规WSGI应用程序。 https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
现在需要做什么来绿色线程我的webservice的功能?我正在运行Windows的进程监视工具,我发现实际上该函数正在一个线程上运行。
你完成了。每个请求都在一个单独的绿色线程中提供。根据定义1,绿色线程在进程外不可见。 (这意味着流程监控工具也看不到绿色线程)