Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在web上实现异步的不同方法

在web上实现异步的不同方法
EN

Stack Overflow用户
提问于 2013-03-17 07:37:55
回答 1查看 98关注 0票数 0

使用以下技术实现异步的方法在概念上的区别是什么?我的主要搜索是Django,但是我正在寻找一个概念上的答案,它描述了技术背后的想法。

  • Socket.IO与gevent
  • WebSockets
  • RabbitMQ &芹菜

我在网上找到了关于大多数这些方法的教程,但是它们并没有解释背后的概念,只解释了技术实现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-17 14:31:09

异步编程很难让你头脑清醒。基本思想是绕过阻塞IO的方法。阻塞IO是从写入到查询数据库的文件,查询REST,以及在等待其他事情发生时中断应用程序处理流程的任何东西。

比如说,你构建了一个画廊应用程序,用户可以上传大高清分辨率图像来炫耀。但是你需要制作这个大图片的各种拷贝--用户上传,缩略图,更小的分辨率版本等等--这需要一些阻塞IO。您需要压缩映像,这是相当密集的,一旦压缩,您需要将这些压缩到磁盘,然后您可能需要将所有这些信息存储在DB中。在一个请求中这样做会给用户带来非常缓慢、笨重的性能,老实说,后端进程可能会在它完成所需的所有任务之前超时。它的规模也不是很好。

解决这一问题的一种方法是使用异步编程。一旦用户上传完毕,您就可以向其他应用程序发送各种信号,等待他们将图像压缩或向DB写入数据的机会。一旦信号触发,这些后台进程就开始工作,用户不必坐着等待一个长时间的请求完成,相反,他们可以继续浏览站点,喝杯咖啡,并在他们的缩略图制作完成后得到通知等等。

在上面的示例中,我将使用芹菜、RabbitMQ和SocketIO (或者可能是TornadIO)来实现这一点。用户上传完成后,我会发射芹菜任务,芹菜使用RabbitMQ (我更喜欢雷迪斯)来管理任务,你可以让10,20,30名芹菜工人在这些图片上传的背景下进行处理。一旦芹菜完成了它的工作,它将向套接字服务器发送一条消息,用于处理web套接字,用户浏览器也连接了这些套接字。这将向用户实时发送一份通知,表示他们上传的新图像已准备好与世界共享。

这是关于异步事件驱动编程的真正基本示例。至少我能理解。其他人请纠正我。

我希望这能帮到你。:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15462629

复制
相关文章
在 Alma Linux 9 上安装 Node.js 的 3 种不同方法
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建快速、可扩展的网络应用程序。在 Alma Linux 9 上安装 Node.js 可以为开发者提供强大的工具和库来开发服务器端应用程序。
网络技术联盟站
2023/05/25
6890
在 Alma Linux 9 上安装 Node.js 的 3 种不同方法
利用js实现不同域名显示不同备案的方法
现实项目当中我们经常会遇到到多给域名访问一个页面或者一个站点的时候,限制备案的审核比较严格,就需要域名对应页面要放正确的备案号下面我们可以利用js实现。
小唐同学.
2023/03/07
3K0
python在不同平台下的安装方法
首先访问http://www.python.org/download/去下载需要的python版本。我使用的是python2.7.5版本
py3study
2020/01/07
8890
python在不同平台下的安装方法
在大规模 Kubernetes 集群上实现高 SLO 的方法
导读:随着 Kubernetes 集群规模和复杂性的增加,集群越来越难以保证高效率、低延迟的交付 pod。本文将分享蚂蚁金服在设计 SLO 架构和实现高 SLO 的方法和经验。
CNCF
2020/11/09
1.3K0
在大规模 Kubernetes 集群上实现高 SLO 的方法
在 Azure Functions 上使用不同的路由前缀
有时需要使用与 Azure Functions 自动生成的路由前缀不同的路由前缀。
Edi Wang
2021/12/20
1.1K0
在 Azure Functions 上使用不同的路由前缀
webkit和blink在blob机制上不同的地方
WebKit.dll!WebCore::BlobURL::createBlobURL(const WTF::String & originString) 行 76 C++ WebKit.dll!WebCore::BlobURL::createPublicURL(WebCore::SecurityOrigin * securityOrigin) 行 47 C++ > WebKit.dll!WebCore::FileReaderLoader::start(WebCore::ScriptExecutionContext * scriptExecutionContext, WebCore::Blob * blob) 行 81 C++ WebKit.dll!WebCore::FileReader::readInternal(WebCore::Blob * blob, WebCore::FileReaderLoader::ReadType type, int & ec) 行 149 C++ WebKit.dll!WebCore::FileReader::readAsText(WebCore::Blob * blob, const WTF::String & encoding, int & ec) 行 113 C++ WebKit.dll!WebCore::jsFileReaderPrototypeFunctionReadAsText(JSC::ExecState * exec) 行 565 C++ > WebKit.dll!WebCore::BlobResourceHandle::BlobResourceHandle(WebCore::BlobData * blobData, const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client, bool async) 行 173 C++ WebKit.dll!WebCore::BlobResourceHandle::createAsync(WebCore::BlobData * blobData, const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client) 行 143 C++ WebKit.dll!WebCore::BlobRegistryImpl::createResourceHandle(const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client) 行 80 C++ WebKit.dll!WebCore::createResourceHandle(const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client) 行 59 C++ WebKit.dll!WebCore::ResourceHandle::create(WebCore::NetworkingContext * context, const WebCore::ResourceRequest & request, WebCore::ResourceHandleClient * client, bool defersLoading, bool shouldContentSniff) 行 92 C++ WebKit.dll!WebCore::ResourceLoader::start() 行 218 C++ WebKit.dll!WebCore::ResourceLoadScheduler::servePendingRequests(WebCore::ResourceLoadScheduler::HostInformation * host, WebCore::ResourceLoadPriority minimumPriority) 行 285 C++ WebKit.dll!WebCore::ResourceLoadScheduler::scheduleLoad(WebCore::ResourceLoader * resourceLoader) 行 189 C++ WebKit.dll!WebCore::ResourceLoadScheduler::scheduleSubresourceLoad(WebCore::Frame * frame, WebCore::CachedResource * resource, const WebCore::ResourceRe
龙泉寺扫地僧
2019/02/20
1.4K0
golang实现动态调用不同struct中不同的方法
在我们的业务中,尤其涉及到后台业务,在我们不用考虑性能的情况下,我们写后台框架的时候,可能会遇到这样的一些情况,如何通过某些struct名和方法名传递进来执行不同的逻辑。这个时候我想的是go的反射是最好的实现这种功能,当然在go里面也可以通过定义配置来实现进入动态进入不同的struct名和方法名,或者其他方式(如果你有更好的方式,可以互相交流)。
公众号-利志分享
2022/04/25
1.7K0
openstack nova-compute在不同的hypervisors上使用不同的存储后端
实验环境 主机名 IP controller1 192.168.2.240 compute1 192.168.2.242 compute2 192.168.2.243 compute3 192.168
tanmx
2018/07/17
2.3K0
Python在不同目录下导入模块的方法
python在不同层级目录import模块的方法 使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。
李智
2018/08/03
3.1K0
在Kubernetes上安装Netdata的方法
Netdata可用于监视kubernetes集群并显示有关集群的信息,包括节点内存使用率、CPU、网络等,简单的说,Netdata仪表板可让您全面了解Kubernetes集群,包括在每个节点上运行的服务和Pod。
小陈运维
2022/04/20
1.1K0
java 异步调用方法_java异步调用方法有哪些?如何实现异步调用?
大家好,又见面了,我是你们的朋友全栈君。 你知道java异步调用方法都有哪些吗?下面的文章内容,就对这方面的问题做了一下整理,一起来看看java异步调用的方法吧! 1、利用Spring的异步方法去执行
全栈程序员站长
2022/09/14
4K0
Cron在Centos上的安装方法
Centos最小化安装时候貌似crond是不带的,需要自己手动安装。但是Centos不同的版本安装命令不一样,在此记录一下!
老高的技术博客
2022/12/28
8260
使用Autofac在ASP.NET Web API上实现依赖注入
【原文】 Dependency Injection with ASP.NET Web API and Autofac,以下为摘要: 在ASP.NET Web API里使用Autofac 通过NuGet安装Autofac.WebApi。(Nuget会安装依赖的Autofac.dll)。 PM > Install-Package Autofac.WebApi 引用如下命名空间。 using Autofac; using Autofac.Integration.WebApi; 代码配置Autofac 可参看ht
张善友
2018/01/30
1.5K0
es6异步方法在项目中的实践
如下面的代码所示,执行Success代码条件有两处,在上面的写法里,这两处分开书写,代码没有复用 利用promise的resolve就可以复用了,如第二个例子所示
用户2845596
2021/01/21
3840
使用AjaxFileUpload.js实现文件异步上�
ajax是无法提交文件的,所以在上传图片并预览的时候,我们常常使用Ifame的方法实现看似异步的效果。可是这样总不是非常方便的,AjaxFilleUpload.js对上面的方法进行了一个包装,使得我们不用去管理Iframe的一系列操作,也不用影响我们的页面结构,实现异步的文件提交。
全栈程序员站长
2021/12/10
1.1K0
实现异步的几种方式_异步怎么实现
FIFO根据输入输出时钟是否一致,分为同步FIFO与异步FIFO。同步FIFO中,读写控制信号以及数据均处于同一时钟域,满足STA分析时一般不会出现亚稳态等不稳定情形;而对于异步FIFO,读写相关信号处于不同时钟域,信号的不同步可能会导致亚稳态,导致FIFO工作异常,设计较为复杂;在之前的记录中,我们对同步FIFO的设计进行了分析:
全栈程序员站长
2022/09/21
7190
实现异步的几种方式_异步怎么实现
点击加载更多

相似问题

Web Api在异步方法上抛出异常

11

实现异步web API

10

CA1001在异步方法上实现IDisposable

22

使用Powershell调用web服务上的异步web方法

13

异步Web方法

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文