tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

misc.rst (1984B)


      1 Miscellaneous
      2 =============
      3 
      4 .. currentmodule:: websockets
      5 
      6 Why do I get the error: ``module 'websockets' has no attribute '...'``?
      7 .......................................................................
      8 
      9 Often, this is because you created a script called ``websockets.py`` in your
     10 current working directory. Then ``import websockets`` imports this module
     11 instead of the websockets library.
     12 
     13 .. _real-import-paths:
     14 
     15 Why is the default implementation located in ``websockets.legacy``?
     16 ...................................................................
     17 
     18 This is an artifact of websockets' history. For its first eight years, only the
     19 :mod:`asyncio` implementation existed. Then, the Sans-I/O implementation was
     20 added. Moving the code in a ``legacy`` submodule eased this refactoring and
     21 optimized maintainability.
     22 
     23 All public APIs were kept at their original locations. ``websockets.legacy``
     24 isn't a public API. It's only visible in the source code and in stack traces.
     25 There is no intent to deprecate this implementation — at least until a superior
     26 alternative exists.
     27 
     28 Why is websockets slower than another library in my benchmark?
     29 ..............................................................
     30 
     31 Not all libraries are as feature-complete as websockets. For a fair benchmark,
     32 you should disable features that the other library doesn't provide. Typically,
     33 you may need to disable:
     34 
     35 * Compression: set ``compression=None``
     36 * Keepalive: set ``ping_interval=None``
     37 * UTF-8 decoding: send ``bytes`` rather than ``str``
     38 
     39 If websockets is still slower than another Python library, please file a bug.
     40 
     41 Are there ``onopen``, ``onmessage``, ``onerror``, and ``onclose`` callbacks?
     42 ............................................................................
     43 
     44 No, there aren't.
     45 
     46 websockets provides high-level, coroutine-based APIs. Compared to callbacks,
     47 coroutines make it easier to manage control flow in concurrent code.
     48 
     49 If you prefer callback-based APIs, you should use another library.