Python EPOL工作原理的一般说明?

Python EPOL工作原理的一般说明?,python,rabbitmq,file-descriptor,epoll,Python,Rabbitmq,File Descriptor,Epoll,我正在写一篇关于从数据库轮询(通过同步存储过程调用)切换到消息队列(通过pub/sub)的技术文章。我希望能够解释轮询数据库与设置到AMQP代理的连接和配置消息处理程序有多么大的不同,并且比设置到AMQP代理的连接和配置消息处理程序要复杂得多 有人可以在这里提供一个解释,或者给我指一个很好的高级教程,说明在通知套接字上有新数据可用时EPOL是如何工作的?我假设“EPOL是如何工作的”,您指的是从用户的角度看它是如何工作的(例如,您的代码是如何得到通知的,以及应该如何处理它),与内核的观点相反(例

我正在写一篇关于从数据库轮询(通过同步存储过程调用)切换到消息队列(通过pub/sub)的技术文章。我希望能够解释轮询数据库与设置到AMQP代理的连接和配置消息处理程序有多么大的不同,并且比设置到AMQP代理的连接和配置消息处理程序要复杂得多

有人可以在这里提供一个解释,或者给我指一个很好的高级教程,说明在通知套接字上有新数据可用时EPOL是如何工作的?

我假设“EPOL是如何工作的”,您指的是从用户的角度看它是如何工作的(例如,您的代码是如何得到通知的,以及应该如何处理它),与内核的观点相反(例如,epoll是如何实现的)

简短的版本非常简单:它就像
poll
,除了两件事:

  • 它使用不透明数据结构的句柄,因此您不会在内核边界之间来回传递太多数据
  • 它有
    poll
    没有的选项(特别是边缘触发和一次性通知),可以让您在某些情况下编写更高效的代码
  • (还有一个事实是,它只在linux上工作。BSD和相关系统有
    kqueue
    ,这是一种获得相同优势的明显不同的方式,Solaris有
    /dev/poll
    ,等等,而一些*nixe没有任何等价物。因此,如果您想编写可移植代码,您必须使用
    poll
    ,或者使用一些高级语言。)r级库,如
    libevent
    ,或者自己编写与
    libevent
    等效的库。)

    如果您已经理解了
    select
    poll
    ,则其引用中链接的和应该在它们之间告诉您几乎所有您需要知道的内容,并且将填补任何空白

    如果没有,请先了解
    poll
    ,然后才能了解
    epoll
    的不同之处


    我仍然不确定这与你的主要问题有什么关系。你可以在数据库文件上使用
    epoll
    一个
    inotify
    ,或者消息传递系统底层的
    pipe
    socket
    ,或者在linux中可以表示为文件描述符的任何东西,所以我不确定如何理解
    epoll
    将帮助您解释轮询数据库和轮询消息队列之间的区别。两者之间当然有很大的区别,但事件触发机制不是其中之一。

    您读过
    http://en.wikipedia.org/wiki/Epoll
    ,或
    http://www.kernel.org/doc/man-pages/online/pages/man4/epoll.4.html
    ,两者都有一般性的解释?另外,我不确定解释
    epoll
    将如何帮助解释您正在讨论的差异。您可以
    epoll
    数据库文件上的inotifix,或者您可以
    epoll
    消息系统下的队列,那么…您的目的是什么?对不起,我被发布了这个问题太早了,我错了。我已经更新了。这能说明问题吗?