2011-08-17 102 views
0

我试图以非阻塞的方式编写事件,以免减慢我们现有的任何进程。这似乎是可用的两个选项是:在Python中延迟处理

是否有其他的选择。任何人都有这方面的经验?

背景:我们打算将事件写入亚马逊的CloudWatch服务,我很担心从做PUT请求延迟。如果这改变了答案,我实际上并不担心会丢失一些PUT(我们正在为提醒目的而编写事件,而且无论如何都会在一周后清除它们)。

+1

只需将它们添加到''multiprocessing'和Queue'有一个函数读出来的'Queue'(阻塞,如果它是空的),写出来? – agf

+0

什么?将延期和日志记录处理程序作为单个问题的解决方案进行比较似乎并不一致。 –

+0

延期显然更强大 - 但我不需要这种权力。我只需要将一个事件记录到可能需要一秒钟才能响应的处理程序,并且我不能等那么久。尽管如此,延期是最简单的解决方案还是其他? –

回答

1

如果日志适合你的应用程序,它听起来那么,它应该比使用双绞线简单。您可以登录到内存中的线程安全队列,并从其中分离出一个或多个线程并将其推送到云端。

这就是说,扭曲可能会更快,或者至少更具扩展性,但是,特别是如果你不知道,有一个陡峭的学习曲线。

如果线程的方法打的限制,你可以随时切换你的日志处理程序使用双绞线,在不改变你的界面应用程序,所以这是我会怎么开始,有一个简单的方法,并依据覆盖。

+0

我不认为这种架构扭曲会更快或更具可扩展性。您只有一个客户端/服务器连接,并且只是在日志记录处理的基础上增加了一些开销。 – schlamar

1

这将是微不足道的与GEVENT(只是做在一个单独的greenlet的PUT和有插座修补)。

+0

更琐碎:['qrequests'](https://github.com/kennethreitz/grequests):) – schlamar