0

场景:用户加载页面,正在生成图像,显示加载栏,向浏览器发送通知事件。

我正在使用 python 代码生成图像。拥有一个启动脚本或将网络服务器代码嵌入到 python 脚本中的网络服务器是否理想?图像完成渲染后,客户端应该会收到一条消息,说明渲染成功并显示图像。

如何构建它以支持并发用户?只需为导航到网页的每个新用户启动 python 脚本就足够了吗?

在这种情况下使用实时 Web 应用程序会不会过大?尝试决定简单的 jQuery AJAX 是否足够,或者应该使用 Socket.io 在服务器和客户端之间建立持久连接。

有没有适合我需要的图书馆?

4

2 回答 2

1

我个人很喜欢 Socket.IO,我愿意用它。因为这将是一种更简单的方法。但这可能只是为此而设置的工作量太大。特别是因为从我听到的与节点相比,它在 Python 中并不是那么简单,它实际上是大约 10 行服务器端。

如果没有 Socket.IO,则可以进行长时间轮询以获取图像处理的状态,并在最后获取 base64 中图像的 url,如果这是你想要的。

于 2012-09-19T16:18:45.770 回答
1

我建议不要为每个请求生成一个新的孩子,而是使用一些任务队列管理工具,例如我可以推荐celery

例如,您可以运行一个线程化的 python 网络服务器,它会为每个请求生成一个任务。然后每个客户端可以定期询问(javascript/jquery)任务是否完成,如果完成,服务器将返回正确的图像地址。此外,celery 具有可以在这种情况下使用的网络回调。(我想,我自己没有使用过这个功能)。

我不会浪费时间编写一些临时解决方案,因为它简单、易于部署、有据可查且可扩展性很好。

于 2012-09-19T16:28:16.883 回答