Example #1
0
 def test_flags_conversion(self):
     if sys.platform != 'win32':
         self.assertEqual(core.loop(2, default=False).backend_int, 2)
     self.assertEqual(core.loop('select', default=False).backend, 'select')
     self.assertEqual(core._flags_to_int(None), 0)
     self.assertEqual(core._flags_to_int(['kqueue', 'SELECT']), core.BACKEND_KQUEUE | core.BACKEND_SELECT)
     self.assertEqual(core._flags_to_list(core.BACKEND_PORT | core.BACKEND_POLL), ['port', 'poll'])
     self.assertRaises(ValueError, core.loop, ['port', 'blabla'])
     self.assertRaises(TypeError, core.loop, object())
Example #2
0
 def test_flags_conversion(self):
     # pylint: disable=no-member
     if not greentest.WIN:
         self.assertEqual(core.loop(2, default=False).backend_int, 2)
     self.assertEqual(core.loop('select', default=False).backend, 'select')
     self.assertEqual(core._flags_to_int(None), 0)
     self.assertEqual(core._flags_to_int(['kqueue', 'SELECT']),
                      core.BACKEND_KQUEUE | core.BACKEND_SELECT)
     self.assertEqual(
         core._flags_to_list(core.BACKEND_PORT | core.BACKEND_POLL),
         ['port', 'poll'])
     self.assertRaises(ValueError, core.loop, ['port', 'blabla'])
     self.assertRaises(TypeError, core.loop, object())
Example #3
0
 def test_flags_conversion(self):
     if sys.platform != 'win32':
         self.assertEqual(core.loop(2, default=False).backend_int, 2)
     self.assertEqual(core.loop('select', default=False).backend, 'select')
     self.assertEqual(core._flags_to_int(None), 0)
     self.assertEqual(core._flags_to_int(['kqueue', 'SELECT']), core.BACKEND_KQUEUE | core.BACKEND_SELECT)
     self.assertEqual(core._flags_to_list(core.BACKEND_PORT | core.BACKEND_POLL), ['port', 'poll'])
     try:
         core.loop(['port', 'blabla'])
     except ValueError as ex:
         if sys.version_info[0] > 2:
             ex.__traceback__ = None
     else:
         raise AssertionError("ValueError is not raised")
     try:
         core.loop(object())
     except TypeError as ex:
         if sys.version_info[0] > 2:
             ex.__traceback__ = None
     else:
         raise AssertionError("TypeError is not raised")
Example #4
0
 def test_flags_conversion(self):
     if sys.platform != 'win32':
         self.assertEqual(core.loop(2, default=False).backend_int, 2)
     self.assertEqual(core.loop('select', default=False).backend, 'select')
     self.assertEqual(core._flags_to_int(None), 0)
     self.assertEqual(core._flags_to_int(['kqueue', 'SELECT']),
                      core.BACKEND_KQUEUE | core.BACKEND_SELECT)
     self.assertEqual(
         core._flags_to_list(core.BACKEND_PORT | core.BACKEND_POLL),
         ['port', 'poll'])
     try:
         core.loop(['port', 'blabla'])
     except ValueError as ex:
         if sys.version_info[0] > 2:
             ex.__traceback__ = None
     else:
         raise AssertionError("ValueError is not raised")
     try:
         core.loop(object())
     except TypeError as ex:
         if sys.version_info[0] > 2:
             ex.__traceback__ = None
     else:
         raise AssertionError("TypeError is not raised")
Example #5
0
http://www.cnblogs.com/wunaozai/p/3950249.html

class loop:
    def __init__(self, object flags=None, object default=None, size_t ptr=0):
        pass

flags: 确定后端使用的异步IO模型,如"select, epoll",可直接字符串也可数字(需参考libev/ev.h)
default:是否使用libev的默认loop,否则将创建一个新的loop

可通过loop.backend确定是否和你设置一致,loop.backend_int返回libev内部对应序号
如:
from gevent import core
flag = "select"
loop=core.loop(flag)
assert loop.backend == flag
assert core._flags_to_int(flag) == loop.backend_int

libev支持的watcher:
所有watcher都通过start启动,并传递回调函数
1.io:
    loop.io(int fd, int events, ref=True, priority=None)
        fd: 文件描述符,可通过sock.fileno()获取
        events: 事件 1:read 2:write 3.read_write

        下面两个参数所有watcher都适用
        ref: 是否增加mainLoop的引用次数,默认是增加的。在libev中watcher.start都会增加引用次数,watcher.stop都会减少引用次数。
            当libev发现引用次数为0,也就没有需要监视的watcher,循环就会退出。
        priority: 设置优先级

2.timer定时器
    loop.timer(double after, double repeat=0.0, ref=True, priority=None)