天道酬勤,学无止境

Would twisted be a good choice for building a multi-threaded server?

I need to pull from hundreds of pop3 email accounts, and i want to build a robust server to do this.

Would twisted be a good choice for this type of project?

Right now a simple prototype would be to pull from a single pop3 account, then it would pull from many but it would be a serialized process.

I want to create a server that has multiple threads so it can do things at the same time.

评论

Twisted is an event-driven networking framework written in Python. It builds heavily on asynchronous and non-blocking features and is best conceived to develop networking applications that utilizes these. It has thread support for use cases where you can not provide for asynchronous non-blocking I/O. This is based on the fact that most of time is spent waiting in network I/O operations.

The two model that exploits this is threading model where you create multiple threads, each accomplishing a single task or a single process that uses non-blocking I/O to accomplish multiple task in a single process by interleaving multiple tasks. Twisted is very suitable for the second model.

Non-Blocking model

+--------------------------+
|task1 | wait period | comp|
+--------------------------+
       +--------------------------+
       |task2 | wait period | comp|
       +--------------------------+

You can develop a very robust server with Twisted and it has POP3 / IMAP support.

There is an example of how to build pop3 client with twisted.

Considering that the majority of your POP3 activity is going to be network I/O, this is where Twisted excels. You're not really threading so much as performing event-based asynchronous socket operations, which is the crowning glory of Twisted.

So, yes, Twisted would be a good choice for this type of project. It can do client and server operations equally well and it is almost trivial to spin up a new async TCP client and it already has a POP3 TCP Client available by default.

It is a good choice for a server but from your description you are acutally looking for a multithreaded POP client.

Twisted is made for reacting to events like incoming requests, you need to send requests, so in this case I fear twisted to be of limited value.

A word of caution with twisted, while twisted is very robust I've found that spinning up a hundred threads using the code examples available in documentation is a recipe for race conditions and deadlocks. My suggestion is try twisted but have the stdlib multithreading module waiting in the wings if twisted becomes unmanageable. I have had good success with a producer consumer model using the aforementioned library.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 一个好的多线程 python 网络服务器?(A good multithreaded python webserver?)
    问题 我正在寻找一个 python 网络服务器,它是多线程的,而不是多进程的(就像 apache 的 mod_python 一样)。 我希望它是多线程的,因为我想要一个内存对象缓存,供各种 http 线程使用。 我的网络服务器做了很多昂贵的事情并计算一些需要缓存在内存中以备将来使用以避免重新计算的大型数组。 这在多进程 Web 服务器环境中是不可能的。 将此信息存储在 memcache 中也不是一个好主意,因为数组很大并且将它们存储在 memcache 中会导致来自 memcache 的数据反序列化,除了 IPC 的额外开销。 我使用 BaseHttpServer 实现了一个简单的网络服务器,它提供了良好的性能,但几个小时后它就卡住了。 我需要一些更成熟的网络服务器。 是否可以将 apache 配置为在线程模型下使用 mod_python 以便我可以进行一些对象缓存? 回答1 樱桃派。 网站上列出的功能: 一个快速的、符合 HTTP/1.1 的、WSGI 线程池的网络服务器。 通常,CherryPy 本身每页只需 1-2 毫秒! 支持任何其他启用 WSGI 的网络服务器或适配器,包括 Apache、IIS、lighttpd、mod_python、FastCGI、SCGI 和 mod_wsgi 易于同时运行多个 HTTP 服务器(例如在多个端口上)
  • 使用 python 和扭曲的聊天彗星站点 [关闭](Chat comet site using python and twisted [closed])
    问题 关闭。 这个问题需要细节或清晰。 它目前不接受答案。 想改善这个问题吗? 通过编辑此帖子添加详细信息并澄清问题。 6年前关闭。 改进这个问题 我想建立一个类似于 www.omegle.com 的网站。 任何人都可以给我一些想法。 我认为它使用扭曲的轨道器彗星服务器构建。 回答1 Twisted 是一个不错的选择。 几年前我用它为我编写的基于浏览器的在线游戏构建了一个服务器——它跟踪客户端,为他们提供对 Ajax 请求的回复,并且还使用了 HTML5 服务器发送的 DOM 事件。 由于 Twisted 良好的 HTTP 库,工作相当轻松。 对于 Python Web 框架,我个人更喜欢 Django。 使用它很快,并且它具有很多开箱即用的功能(我认为“包括电池”,正如他们在他们的网站上所说的那样)。 Pylons 是另一个受欢迎的选择。 回答2 您可以使用 Nevow,它是一个构建在 Twisted 之上的 Web 框架。 Nevow 的文档包括一个功能齐全的双向聊天应用程序,其中包括如何为其编写单元测试的示例。 回答3 我建议你使用扭曲。 ;) 它有聊天客户端和聊天服务器。 那么你还需要一个网络框架。 我会使用 Grok 或 BFD,但周围有很多 Python Web 框架,其中很少有真正糟糕的。 回答4 大多数 XMPP 服务器都支持 BOSH。 如果您使用 strophe
  • How to IPC between PHP clients and a C Daemon Server?
    and thanks for taking a look at the question. The background I have several machines that continuously spawn multiple (up to 300) PHP console scripts in a very short time frame. These scripts run quickly (less than a second) and then exit. All of these scripts need read only access to a large trie structure which would be very expensive to load into memory each time each one of the scripts runs. The server runs Linux. My solution Create a C daemon that keeps the trie structure in memory and receives requests from the PHP clients. It would receive a request from every one of the PHP clients
  • 何时使用龙卷风,何时使用Twisted / Cyclone / GEvent /其他[关闭](When to use Tornado, when to use Twisted / Cyclone / GEvent / other [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 6年前关闭。 改善这个问题 以下哪个框架/库是构建现代多用户Web应用程序的最佳选择? 我很想拥有一个异步Web服务器,这将使我可以轻松扩展。 哪种解决方案将提供最佳的性能/可伸缩性/最有用的框架(就易于使用和易于开发而言)? 如果它将提供良好的功能(websockets,rpc,流式传输等),那就太好了。 每种解决方案的优缺点是什么? 回答1 “ Django是一个高级Python Web框架,鼓励快速开发和简洁实用的设计” 。 如果您要构建类似于电子商务站点的内容,则可能应该使用Django。 它将使您的工作迅速完成。 您不必担心太多的技术选择。 它提供了从模板引擎到ORM所需的一切。 对于您构建应用程序的方式,我们会有些怀疑,如果您问我,这很好。 它具有所有其他图书馆中最强大的社区,这意味着可以轻松获得帮助。 “ Flask是基于Werkzeug,Jinja 2和良好意图的Python微框架” 。 当心-“微框架”可能会产生误导。 这并不意味着Flask是一个半熟的库。 这意味着烧瓶的核心非常非常简单。 与Django不同,它不会为您做出任何技术决策。 您可以自由选择任何令您满意的模板引擎或ORM。 即使默认情况下它带有Jinja模板引擎
  • 用于构建 TCP 服务器的好的 Python 网络库?(Good Python networking libraries for building a TCP server?)
    问题 我只是想知道有哪些用于 Python 构建 TCP/IP 服务器的网络库。 我知道 Twisted 可能会跳到我的脑海中,但文档对我来说似乎稀缺、草率且零散。 另外,使用 Twisted 甚至比使用 select.select() 滚动我自己的服务器有好处吗? 回答1 我必须同意文档有点简洁,但本教程可以让您快速上手。 http://twistedmatrix.com/projects/core/documentation/howto/tutorial/index.html Twisted 的基于事件的编程范式及其延迟在开始时可能有点奇怪(对我来说),但值得学习曲线。 与编写自己的框架相比,您将能够更快地启动并运行更复杂的东西,而且这也意味着更少的 bug 搜索,因为 Twisted 已在生产环境中得到充分验证。 我真的不知道还有什么框架可以提供与 Twisted 一样多的功能,所以我的投票肯定会投给 Twisted,即使这些文档不适合胆小的人。 我同意 Greg 的观点,即 SocketServer 是一个不错的中间地带,但是根据您的应用程序的目标受众及其设计,您可能会在 Twisted 中期待一些不错的东西(想到非常有用的 PerspectiveBroker - http: //twistedmatrix.com/projects/core/documentation
  • Python 3中的多处理与多线程与异步(multiprocessing vs multithreading vs asyncio in Python 3)
    问题 我发现在Python 3.4中,用于多处理/线程的库很少:多处理与线程与异步。 但是我不知道使用哪个,或者是“推荐的”。 他们做的是同一件事还是不同? 如果是这样,则将哪一个用于什么? 我想编写一个在计算机上使用多核的程序。 但是我不知道我应该学习哪个图书馆。 回答1 它们旨在(略有)不同的目的和/或要求。 CPython(典型的主线Python实现)仍然具有全局解释器锁,因此多线程应用程序(当今实现并行处理的标准方式)不是最佳选择。 这就是为什么multiprocessing可能比threading更可取的原因。 但是并不是每个问题都可以有效地分解为[几乎独立的]部分,因此可能需要大量的进程间通信。 这就是为什么一般而言, multiprocessing可能threading受青睐。 asyncio (此技术不仅在Python中可用,其他语言和/或框架也有此技术,例如Boost.ASIO)是一种有效处理来自许多同时源的大量I / O操作而无需并行代码的方法执行。 因此,这仅是针对特定任务的解决方案(确实是一个不错的解决方案!),而不是通常用于并行处理的解决方案。 回答2 TL; DR 做出正确的选择: 我们介绍了最流行的并发形式。 但是问题仍然存在-什么时候应该选择哪一个? 这实际上取决于用例。 根据我的经验(和阅读),我倾向于遵循以下伪代码: if io_bound
  • 最新建议使用Python Comet? [关闭](The latest recommendation for Comet in Python? [closed])
    问题 从目前的情况来看,这个问题不适合我们的问答形式。 我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。 如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我将用Python实现Comet(尽管我听说过关于erlycomet的好消息,除了后端的所有其他功能之外,我并不为支持基于Erlang的Web服务器而感到兴奋)。 我发现了几种可能性: 柴油机龙卷风扭曲彗星绕行(使用扭曲) (还有一些其他选择可以与Java服务器连接,但我对此并不感兴趣) 考虑到性能,社区和易于实施性,有人可以在这些实施中提出建议吗? 回答1 我个人使用的是Orbited,这既是因为我已经在使用Twisted,还是因为它看起来很成熟。 Twisted在许多用户中拥有悠久的悠久历史,尤其是与Diesel和Tornado相比。 轨道的确是建立在Twisted上的。 这里有一篇不错的博客文章,涵盖了端到端轨道解决方案。 它将数据从python脚本发送到STOMP服务器(MorbidQ),再通过Orbited to Javascript-将数据呈现为图形。 龙卷风对现场来说似乎很新,我找不到扭曲的彗星,也没有听说过柴油。 我特别喜欢Orbited可以转发任何类型的tcp / ip的方式
  • muduo库学习之常用编程模型04——常用编程模型与进程间通信方式的选择
    东阳的学习笔记 文章目录 1. 单线程服务器常用地编程模型2. 典型的多线程服务器的线程模型One loop per thread线程池归纳 3. 进程间通信与线程间通信进程间通信 原文链接:https://blog.csdn.net/yuyin86/article/details/7086424 1. 单线程服务器常用地编程模型 常用的单线程编程模型见https://blog.csdn.net/qq_22473333/article/details/112910686 在高性能的网络程序中,使用得最为广泛的恐怕要数“non-blocking IO + IO multiplexing”这种模型,即 Reactor 模式,我知道的有: l lighttpd,单线程服务器。(nginx 估计与之类似,待查) libevent/libev ACE,Poco C++ libraries(QT 待查) Java NIO (Selector/SelectableChannel), Apache Mina, Netty (Java) POE (Perl) Twisted (Python) 相反,boost::asio 和 Windows I/O Completion Ports 实现了 Proactor 模式,应用面似乎要窄一些。当然,ACE 也实现了 Proactor 模式,不表。 在“non
  • 哪个 Python 异步库最适合我的代码? 异步? 扭曲?(Which Python async library would be best suited for my code? Asyncore? Twisted?)
    问题 我正在开发一个程序,它将同时从两个“网络资源”中读取数据。 我想尝试一种异步方法而不是使用线程。 这让我想知道要使用哪个库... 我想出了一些简单的示例代码来演示我的程序将要做什么: import sniffer def first(): for station in sniffer.sniff_wifi(): log(station.mac()) def second(): for station in sniffer.sniff_ethernet(): log(station.mac()) first() second() 这两个sniffer方法看起来有点像这样: def sniff_wifi(self): while True: yield mac_address while True循环显然使它们阻塞。 我想为此使用asyncore ,因为它是标准库的一部分。 没有第 3 方的依赖是额外的。 但是,如果您建议我这样做,这并不意味着我不会使用它...... 我可以用 asyncore 实现我想要做的事情吗? 如果是这样,你能告诉我如何将我的示例代码转换为“异步代码”吗? 你知道任何好的异步教程吗? 回答1 Twisted 几乎在所有可能的方面都更好。 它更便携、更有特色、更简单、更可扩展、更好维护、更好记录,并且可以制作美味的煎蛋。 出于所有意图和目的
  • Scrapy 是单线程还是多线程?(is Scrapy single-threaded or multi-threaded?)
    问题 Scrapy 中很少有并发设置,比如 CONCURRENT_REQUESTS。 这是否意味着 Scrapy 爬虫是多线程的? 因此,如果我运行scrapy crawl my_crawler它实际上会并行触发多个并发请求吗? 我问是因为,我读过 Scrapy 是单线程的。 回答1 Scrapy 是单线程的,除了交互式 shell 和一些测试,请参阅源代码。 它建立在 Twisted 之上,Twisted 也是单线程的,并利用它自己的异步并发功能,例如twisted.internet.interfaces.IReactorThreads.callFromThread,请参阅源代码。 回答2 Scrapy 同步完成大部分工作。 但是,请求的处理是异步完成的。 如果您还没有看过,我建议您访问此页面。 http://doc.scrapy.org/en/latest/topics/architecture.html 编辑:我现在意识到问题是关于线程的,不一定是异步的。 尽管如此,该链接仍然是一个很好的阅读:) 关于您关于 CONCURRENT_REQUESTS 的问题。 此设置更改扭曲将立即延迟的请求数。 一旦启动了那么多请求,它将等待其中一些请求完成,然后再启动更多请求。 回答3 Scrapy 是单线程框架,我们不能在一个蜘蛛中同时使用多个线程。 但是
  • Python Web 应用的架构解决方案(Architecture solution for Python Web application)
    问题 我们正在设置一个 Python REST Web 应用程序。 现在,我们正在使用 WSGI,但将来我们可能会对其进行一些更改(例如,使用 Twisted 来改进可伸缩性或其他一些功能)。 我真的很想得到一些关于什么被认为是 Python 中 Web 应用程序的良好架构的帮助。 一般来说,我们的应用程序提供动态内容,处理来自客户端的中到高级数据,执行非常高需求的数据库、网络和文件系统调用,并且应该“容易”扩展(这里引用是因为如果解决方案很棒但有点难以实现)配置可扩展性,它肯定会被认为是好的)。 从中长期来看,我们可能希望将其发展为高度并行的应用程序。 Google App Engine不被接受,主要是因为它的成本。 我的问题是这样的: 使用 WSGI 是个好主意吗? 我们应该研究像 Twisted 这样的东西吗? 我们应该使用 Apache 作为静态文件的反向代理吗? 是否有一些我没有提到的我们应该考虑的不同模式或架构? (即使完全显而易见)。 对此的任何帮助将不胜感激。 非常感谢! 回答1 WSGI 应用程序会很好,这主要是后端问题和数据处理问题,在我看来,这是更多架构部分发挥作用的地方。 我会考虑使用 Celery ( http://celeryproject.org/ ) 进行工作分配和后端扩展。 Twisted 将是一个不错的选择,但看起来您已经编写了用作 WSGI
  • 哪种方式去扭曲和网络编程?(Which way to go with twisted and web-programming?)
    问题 因此,我在几个月前编写了这个扭曲的应用程序,现在我想使用基于 Web 的用户界面进行扩展以进行配置。 Twisted 网站推荐 Nevow,但我不确定这是否是一个不错的选择。 他们的网站似乎已经关闭了一段时间,并且他们的启动板页面半年没有看到任何更新。 这个项目死了吗? 另外,我在twisted-web 邮件列表上看到了关于将Nevow 的部分移动到twisted.web 的讨论。 那么,它是否仍然推荐用于新的开发? 另一个想法是使用 Django。 无论如何,我都需要在 config-interface 中进行用户身份验证和权限,我对此非常熟悉。 (我从来没有使用过 Nevow 或twisted.web)但是连接这两个世界似乎很困难,我所能找到的只是在 Twisted 中使用 WSGI 运行 Django 的例子。 是否还有其他可能性可以在扭曲的顶部拥有一个看起来很漂亮的用户界面? 回答1 首先,让我谈谈 Nevow 已死的看法。 包含 Nevow 代码(以及其余 Divmod 项目)的启动板项目是启动板上的 divmod.org。 硬件故障严重影响了该项目的公众形象,但它仍然存在,其他东西(如 wiki 和门票)正在恢复中。 目前没有很多积极的维护工作正在进行,但这主要是因为它对大多数用户来说已经足够好了; 有很多人依赖 Nevow,如果它停止工作,他们会非常沮丧。
  • Python web 框架 + [a] 同步任务; 长轮询:不是 Django(Python web framework + [a]sync tasks; long polling: not Django)
    问题 我需要创建一个具有 Web 前端的项目来管理同步任务执行 (ala fabric)、异步任务 (AMQP) 和长轮询/ajax 以表格查看结果和队列/大的、经常变化的数据集(想想tail -f syslog )。 我有一个现有的 Python 代码库,用于许多特定于实现的东西。 在查看了一堆现有框架之后,显而易见的答案似乎是 Django+Celery。 不过,我并不想“学习的Django”,我也不需要它的功能95%。 我只需要简单的身份验证,也许 sqlalchemy、easy ajax、amqp、xmlrpc 会有所帮助。 我会考虑使用 Mongrel2,但我更喜欢 RabbitMQ 而不是 0MQ(出于一些特定于实现的原因)。 我最初花了很多时间学习 Twisted,最终从中得到了几百个有用的 LOC,但我发现我扭曲了太多平台代码(lol)以适应它的回调模型。 它实际上非常“符合要求”(除了它自己的 amqp 实现),但它是如此令人沮丧,而且我经历了如此多的代码迭代(每个“扭曲的啊哈时刻”迭代一次),结果是 100%。 有人可以帮我趟过泥潭吗? 龙卷风? 塔? 回复? 金字塔? 烧瓶? 瓶子? 樱桃派? Web2py? 帕斯特/韦伯? 还有什么@ http://wiki.python.org/moin/WebFrameworks? 编辑: 需要明确的是,与
  • 如何使用javascript客户端设置Python服务器端(How to set up Python server side with javascript client side)
    问题 因此,已经有一个在我必须构建的控制台上运行的Python程序设置。 我将使用Javascript为该应用程序构建Web GUI界面。 我将如何: 一种。 开始处理此Python程序的输入/输出,而无需触摸原始代码。 b。 通过Java调用将控制台输入发送到Python程序。 我已经研究过原始的HTTP请求/ AJAX,但不确定如何将其作为输入发送到Python程序。 回答1 一种。 处理程序的输入/输出:Pexpect。 它相当容易使用,阅读其中附带的一些示例应该可以教给您足够的基础知识。 b。 JavaScript介面: 好吧,我使用gevent及其内置的WSGI服务器。 (查找WSGI服务器(另一个)是什么)。 我应该注意,该程序将保持状态,因此您可以通过将会话ID返回给javascript客户端并将pexpect会话存储在全局变量或其他容器中来管理打开的会话,以便完成程序的输入和输出跨多个独立的AJAX请求。 但是,我将其留给您,因为这并不那么简单。 我所有的示例所要做的就是在单击您选择的内容后将POST请求放入一些内容中。 (由于未设置某些变量,因此实际上不起作用。对其进行设置。) 以下是相关部分: <!-- JavaScript --> <script src="jquery.js"></script> <script type="text/javascript">
  • 开发游戏服务器的好语言?(Good language to develop a game server in?)
    问题 我只是想知道哪种语言是开发支持大量(数千)用户的游戏服务器的不错选择? 我涉足了 python,但意识到这太麻烦了,因为它不会跨内核产生线程(意味着 8 核服务器 = 1 核服务器)。 我也不太喜欢这种语言(“自我”的东西让我感到恶心)。 我知道 C++ 是性能方面的工作语言,但我讨厌它。 我不想处理它草率的语法,我喜欢我的手被托管语言握住。 这让我接触了 C# 和 Java,但我对其他语言持开放态度。 我喜欢 .NET 的简单性,但我想知道,速度方面,这是否适合这份工作。 请记住,由于这将部署在 Linux 服务器上,它将在 Mono 框架上运行 - 不确定这是否重要。 我知道 Java 在语法上与 .Net 非常相似,但我对它的经验有限。 是否有任何框架可以缓解开发过程? 请帮助我和我挑剔的自己找到解决方案。 更新:我不是故意听起来这么挑剔,我真的不认为我是。 我真正排除的唯一语言是 C++,由于可扩展性问题,我不喜欢 Python。 我知道进程之间有通信的方式,但是如果我有一个8核服务器,为什么我需要做8个进程? 有没有更优雅的解决方案? 回答1 Erlang 是一种围绕并发和分布在多个服务器上而设计的语言,非常适合服务器软件。 关于 Erlang 和游戏服务器的一些链接: http://www.devmaster.net/articles/mmo-scalable
  • python中的客户端服务器编程?(Client Server programming in python?)
    问题 这是python中多线程服务器和客户端的源代码。 在代码中客户端和服务器在作业完成后关闭连接。 我想让连接保持活动状态并通过相同的连接发送更多数据以避免每次关闭和打开套接字的开销。 以下代码来自:http://www.devshed.com/c/a/Python/Basic-Threading-in-Python/1/ import pickle import socket import threading # We'll pickle a list of numbers: someList = [ 1, 2, 7, 9, 0 ] pickledList = pickle.dumps ( someList ) # Our thread class: class ClientThread ( threading.Thread ): # Override Thread's __init__ method to accept the parameters needed: def __init__ ( self, channel, details ): self.channel = channel self.details = details threading.Thread.__init__ ( self ) def run ( self ): print 'Received
  • Python,多线程,抓取网页,下载网页(Python,multi-threads,fetch webpages,download webpages)
    问题 我想在一个站点中批量下载网页。 我的“urls.txt”文件中有 5000000 个 urls 链接。 大约是300M。 如何使多线程链接这些网址并下载这些网页? 或者如何批量下载这些网页? 我的想法: with open('urls.txt','r') as f: for el in f: ##fetch these urls 或扭曲? 有什么好的解决办法吗? 回答1 如果这不是更大程序的一部分,那么 notnoop 使用一些现有工具来完成它的想法是一个很好的想法。 如果调用 wget 的 shell 循环解决了您的问题,那将比涉及更多自定义软件开发的任何事情容易得多。 但是,如果您需要将这些资源作为更大程序的一部分来获取,那么使用 shell 执行它可能并不理想。 在这种情况下,我强烈推荐 Twisted,它可以轻松地并行处理多个请求。 几年前,我写了一个例子来说明如何做到这一点。 看看 http://jcalderone.livejournal.com/24285.html。 回答2 一次下载 500 万个网页绝对不是一个好主意,因为您将最大限度地利用很多东西,包括您的网络带宽和操作系统的文件描述符。 我会分批购买 100-1000 个。 您可以使用 urllib.urlopen 来获取一个套接字,然后在多个线程上使用 read() 。 您也许可以使用 select
  • 如何使用Twisted Words Python库创建简单的Google Talk客户端?(How do you create a simple Google Talk Client using the Twisted Words Python library?)
    问题 我有兴趣使用Python制作Google Talk客户端,并希望使用Twisted library Words模块。 我看过这些示例,但是它们不适用于当前的Google Talk实现。 有人有运气吗? 您介意编写简短的教程吗? 作为一个简单的任务,我想创建一个客户端/机器人来跟踪我的各种Google Talk帐户的在线时间,以便获得一个汇总数字。 我认为我可以在每个帐户中让该漫游器成为朋友,然后使用XMPP在场信息来跟踪随后可以汇总的时间。 谢谢。 回答1 wokkel是未来的双刃剑。 metajack在入门方面写了一篇非常不错的博客文章。 如果您想从一个不错的,功能齐全的示例项目开始,请查看我的whatsup机器人。 回答2 我使用xmpppy库编写了一个简单的Jabber机器人(因此也称为Google Talk机器人),效果很好。 xmpppy上的示例应该可以帮助您入门(特别是bot.py) 至于实际上在扭曲中实现的东西。 这是一个有关创建机器人的简单教程,该机器人将收到的所有消息打印到本地终端(以及响应收到的消息的版本)。 要跟踪各种帐户的在线时间,您可以添加“状态”的回调(在线/离线/离开等都是“状态更改”,在Jabber术语中) 为了获得更完整的系统,pownce-jabber-bot使用twisted.words和wokkel作为jabber界面。
  • 用于 Comet 应用程序的 Node.js 与 Java [关闭](Node.js vs Java for Comet application [closed])
    问题 关闭。 这个问题是基于意见的。 它目前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑这篇文章用事实和引文来回答问题。 7年前关闭。 改进这个问题 我们希望构建一个高性能、可扩展的 Comet 服务器,并首先考虑将 Java Grizzly 与 GlassFish 结合使用。 但经过一些研究,我们发现 Node.JS 由于极其简单而迅速成为首选,并声称其性能: http://news.ycombinator.com/item?id=1088699 http://amix.dk/blog/post/19484 我会很高兴听到一些使用两者的真实体验,以及最终可能是最好的选择。 谢谢! 回答1 如果您进一步阅读同一作者的博文,即 Node.js 最适合 Comet,他解释了为什么他再次回到基于 Java 的解决方案 (Netty) 并对此感到满意。 我想那将是一个有趣的阅读。 回答2 我知道这是一个古老且已经回答的问题,但我认为我的经验可能会有所帮助。 我开始了一个小项目来测试 Node.js——它“感觉”如何以及如何在它上面编程。 在这样的生态系统中工作的便利性给我留下了深刻的印象:Node.js 代码很容易编写(尽管它的异步范式对于传统程序员来说并不那么简单),库很容易构建等等。甚至 npm 也非常简单:我刚刚发现将您自己的代码作为库提供的最直接方法是制作它的公共包!
  • 7款Python开源框架的优劣总结
    学习任何一门开发语言都离不开框架,一个框架就好比是一个毛坯房,只需要我们装修就可以入住。如果没有框架我们就只能一砖一瓦的去盖楼房了。框架的种类很多,具体选择要根据实际的业务情况。下面就简单的介绍一下Python七款开源框架的优劣。DjangoDjango 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。优点:开源框架,有完美的文档支持解决方案众多,内部功能支持较多优雅的URL,完整的路由系统自助式的后台管理缺点:系统紧耦合,想用喜欢的第三方库来代替是非常难的,即使打了一些补丁用上了也会觉得非常别扭。Django自带的ORM远不如SQLAlchemy强大。Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现 Tag或Filter。FlaskFlask是一个用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数 据库、窗体验证工具。优点:Flask比Django更灵活