def _events(self, using_url, filters=None, limit=None):
<EOL>if not isinstance(limit, (int, NoneType)):<EOL><INDENT>limit = None<EOL><DEDENT>if filters is None:<EOL><INDENT>filters = []<EOL><DEDENT>if isinstance(filters, string_types):<EOL><INDENT>filters = filters.split('<STR_LIT:U+002C>')<EOL><DEDENT>if not self.blocking:<EOL><INDENT>self.blocking = True<EOL><DEDENT>while self.blocking:<EOL><INDENT>params = {<EOL>'<STR_LIT>': self._last_seen_id,<EOL>'<STR_LIT>': limit,<EOL>}<EOL>if filters:<EOL><INDENT>params['<STR_LIT>'] = '<STR_LIT:U+002C>'.join(map(str, filters))<EOL><DEDENT>try:<EOL><INDENT>data = self.get(using_url, params=params, raw_exceptions=True)<EOL><DEDENT>except (ConnectTimeout, ConnectionError) as e:<EOL><INDENT>data = None<EOL><DEDENT>except Exception as e:<EOL><INDENT>reraise('<STR_LIT>', e)<EOL><DEDENT>if data:<EOL><INDENT>self._last_seen_id = data[-<NUM_LIT:1>]['<STR_LIT:id>']<EOL>for event in data:<EOL><INDENT>self._count += <NUM_LIT:1><EOL>yield event<EOL><DEDENT><DEDENT><DEDENT>
A long-polling method that queries Syncthing for events..

            Args:
                using_url (str): REST HTTP endpoint
                filters (List[str]): Creates an "event group" in Syncthing to
                    only receive events that have been subscribed to.
                limit (int): The number of events to query in the history
                    to catch up to the current state.

            Returns:
                generator[dict]