Todo: 集成多平台 解决因SaiNiu线程抢占资源问题 本地提交测试环境打包 和 正式打包脚本与正式环境打包bat 提交Python32环境包 改进多日志文件生成情况修改打包日志细节

This commit is contained in:
2025-09-18 15:52:03 +08:00
parent 8b9fc925fa
commit 7cfc0c22b7
7608 changed files with 2424791 additions and 25 deletions

View File

@@ -0,0 +1,24 @@
Copyright (c) Aymeric Augustin and contributors
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,179 @@
Metadata-Version: 2.2
Name: websockets
Version: 15.0.1
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
Author-email: Aymeric Augustin <aymeric.augustin@m4x.org>
License: BSD-3-Clause
Project-URL: Homepage, https://github.com/python-websockets/websockets
Project-URL: Changelog, https://websockets.readthedocs.io/en/stable/project/changelog.html
Project-URL: Documentation, https://websockets.readthedocs.io/
Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-websockets?utm_source=pypi-websockets&utm_medium=referral&utm_campaign=readme
Project-URL: Tracker, https://github.com/python-websockets/websockets/issues
Keywords: WebSocket
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
Dynamic: description
Dynamic: description-content-type
.. image:: logo/horizontal.svg
:width: 480px
:alt: websockets
|licence| |version| |pyversions| |tests| |docs| |openssf|
.. |licence| image:: https://img.shields.io/pypi/l/websockets.svg
:target: https://pypi.python.org/pypi/websockets
.. |version| image:: https://img.shields.io/pypi/v/websockets.svg
:target: https://pypi.python.org/pypi/websockets
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/websockets.svg
:target: https://pypi.python.org/pypi/websockets
.. |tests| image:: https://img.shields.io/github/checks-status/python-websockets/websockets/main?label=tests
:target: https://github.com/python-websockets/websockets/actions/workflows/tests.yml
.. |docs| image:: https://img.shields.io/readthedocs/websockets.svg
:target: https://websockets.readthedocs.io/
.. |openssf| image:: https://bestpractices.coreinfrastructure.org/projects/6475/badge
:target: https://bestpractices.coreinfrastructure.org/projects/6475
What is ``websockets``?
-----------------------
websockets is a library for building WebSocket_ servers and clients in Python
with a focus on correctness, simplicity, robustness, and performance.
.. _WebSocket: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
Built on top of ``asyncio``, Python's standard asynchronous I/O framework, the
default implementation provides an elegant coroutine-based API.
An implementation on top of ``threading`` and a Sans-I/O implementation are also
available.
`Documentation is available on Read the Docs. <https://websockets.readthedocs.io/>`_
.. copy-pasted because GitHub doesn't support the include directive
Here's an echo server with the ``asyncio`` API:
.. code:: python
#!/usr/bin/env python
import asyncio
from websockets.asyncio.server import serve
async def echo(websocket):
async for message in websocket:
await websocket.send(message)
async def main():
async with serve(echo, "localhost", 8765) as server:
await server.serve_forever()
asyncio.run(main())
Here's how a client sends and receives messages with the ``threading`` API:
.. code:: python
#!/usr/bin/env python
from websockets.sync.client import connect
def hello():
with connect("ws://localhost:8765") as websocket:
websocket.send("Hello world!")
message = websocket.recv()
print(f"Received: {message}")
hello()
Does that look good?
`Get started with the tutorial! <https://websockets.readthedocs.io/en/stable/intro/index.html>`_
Why should I use ``websockets``?
--------------------------------
The development of ``websockets`` is shaped by four principles:
1. **Correctness**: ``websockets`` is heavily tested for compliance with
:rfc:`6455`. Continuous integration fails under 100% branch coverage.
2. **Simplicity**: all you need to understand is ``msg = await ws.recv()`` and
``await ws.send(msg)``. ``websockets`` takes care of managing connections
so you can focus on your application.
3. **Robustness**: ``websockets`` is built for production. For example, it was
the only library to `handle backpressure correctly`_ before the issue
became widely known in the Python community.
4. **Performance**: memory usage is optimized and configurable. A C extension
accelerates expensive operations. It's pre-compiled for Linux, macOS and
Windows and packaged in the wheel format for each system and Python version.
Documentation is a first class concern in the project. Head over to `Read the
Docs`_ and see for yourself.
.. _Read the Docs: https://websockets.readthedocs.io/
.. _handle backpressure correctly: https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/#websocket-servers
Why shouldn't I use ``websockets``?
-----------------------------------
* If you prefer callbacks over coroutines: ``websockets`` was created to
provide the best coroutine-based API to manage WebSocket connections in
Python. Pick another library for a callback-based API.
* If you're looking for a mixed HTTP / WebSocket library: ``websockets`` aims
at being an excellent implementation of :rfc:`6455`: The WebSocket Protocol
and :rfc:`7692`: Compression Extensions for WebSocket. Its support for HTTP
is minimal — just enough for an HTTP health check.
If you want to do both in the same server, look at HTTP + WebSocket servers
that build on top of ``websockets`` to support WebSocket connections, like
uvicorn_ or Sanic_.
.. _uvicorn: https://www.uvicorn.org/
.. _Sanic: https://sanic.dev/en/
What else?
----------
Bug reports, patches and suggestions are welcome!
To report a security vulnerability, please use the `Tidelift security
contact`_. Tidelift will coordinate the fix and disclosure.
.. _Tidelift security contact: https://tidelift.com/security
For anything else, please open an issue_ or send a `pull request`_.
.. _issue: https://github.com/python-websockets/websockets/issues/new
.. _pull request: https://github.com/python-websockets/websockets/compare/
Participants must uphold the `Contributor Covenant code of conduct`_.
.. _Contributor Covenant code of conduct: https://github.com/python-websockets/websockets/blob/main/CODE_OF_CONDUCT.md
``websockets`` is released under the `BSD license`_.
.. _BSD license: https://github.com/python-websockets/websockets/blob/main/LICENSE

View File

@@ -0,0 +1,107 @@
../../Scripts/websockets.exe,sha256=_zChYPmS7obfe-JRfrCUYPr36qtzLqYfa9WKkeyExPs,98109
websockets-15.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
websockets-15.0.1.dist-info/LICENSE,sha256=D0RRSZisognTSC0QIEqK3yqkKW_xV6NqXAki8igGMtM,1538
websockets-15.0.1.dist-info/METADATA,sha256=hBpnhSyszV0ncnaPX6nbHp0iAuE7x2VdfjHLzQnz14k,6996
websockets-15.0.1.dist-info/RECORD,,
websockets-15.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets-15.0.1.dist-info/WHEEL,sha256=c6uQySv8-CQGjdNllXUwVxs126ZB8V2dkh2N6WXO6oI,97
websockets-15.0.1.dist-info/entry_points.txt,sha256=Dnhn4dm5EsI4ZMAsHldGF6CwBXZrGXnR7cnK2-XR7zY,51
websockets-15.0.1.dist-info/top_level.txt,sha256=CMpdKklxKsvZgCgyltxUWOHibZXZ1uYIVpca9xsQ8Hk,11
websockets/__init__.py,sha256=gnZ1a8qhrWVVClaf7lGqkSVQAPPm-cSZ3k3525fozaY,7294
websockets/__main__.py,sha256=h1QpgvR08tO6TfQHuySKKgQiQVXVIoQRKLEx5sVht_M,67
websockets/__pycache__/__init__.cpython-313.pyc,,
websockets/__pycache__/__main__.cpython-313.pyc,,
websockets/__pycache__/auth.cpython-313.pyc,,
websockets/__pycache__/cli.cpython-313.pyc,,
websockets/__pycache__/client.cpython-313.pyc,,
websockets/__pycache__/connection.cpython-313.pyc,,
websockets/__pycache__/datastructures.cpython-313.pyc,,
websockets/__pycache__/exceptions.cpython-313.pyc,,
websockets/__pycache__/frames.cpython-313.pyc,,
websockets/__pycache__/headers.cpython-313.pyc,,
websockets/__pycache__/http.cpython-313.pyc,,
websockets/__pycache__/http11.cpython-313.pyc,,
websockets/__pycache__/imports.cpython-313.pyc,,
websockets/__pycache__/protocol.cpython-313.pyc,,
websockets/__pycache__/server.cpython-313.pyc,,
websockets/__pycache__/streams.cpython-313.pyc,,
websockets/__pycache__/typing.cpython-313.pyc,,
websockets/__pycache__/uri.cpython-313.pyc,,
websockets/__pycache__/utils.cpython-313.pyc,,
websockets/__pycache__/version.cpython-313.pyc,,
websockets/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/asyncio/__pycache__/__init__.cpython-313.pyc,,
websockets/asyncio/__pycache__/async_timeout.cpython-313.pyc,,
websockets/asyncio/__pycache__/client.cpython-313.pyc,,
websockets/asyncio/__pycache__/compatibility.cpython-313.pyc,,
websockets/asyncio/__pycache__/connection.cpython-313.pyc,,
websockets/asyncio/__pycache__/messages.cpython-313.pyc,,
websockets/asyncio/__pycache__/router.cpython-313.pyc,,
websockets/asyncio/__pycache__/server.cpython-313.pyc,,
websockets/asyncio/async_timeout.py,sha256=jMKMQcVKWtn09n6lqefqdpSYoMRlP4Ek60RjJ6B6Eco,9253
websockets/asyncio/client.py,sha256=u5ek8ZPWuHS1_Z3roZ1fuW26iGeBaZBIjrXack5j2LM,32310
websockets/asyncio/compatibility.py,sha256=ld5lpbBgJ8YGAi3tc1hMiIxuLeQWDg6pKDYBVbSQMl4,816
websockets/asyncio/connection.py,sha256=pFbCzpTHzVgwAsEC7ISjjYjmL5cu0v_2DCV0TTHm910,49959
websockets/asyncio/messages.py,sha256=bzPkRaohSTLKmjZqAriIIMTdIB4DFM4G3y-1NfDAu3k,11307
websockets/asyncio/router.py,sha256=Ww_6IZbC8CT_-EvVgDjkJgX-QSZRNfuyGzAlJd0saGs,6799
websockets/asyncio/server.py,sha256=AUB_3DWmUXPEUgGzSpiG70tnWxSpSn3066XszwEOJLo,38366
websockets/auth.py,sha256=NZ60zoE10wklboBHzj4Wof9piVB09jO1bDn_KHN8ZcE,586
websockets/cli.py,sha256=dEUrXN6jOq0-HZbdujpvEHTY2WsATSX2F6czGWNC-58,5514
websockets/client.py,sha256=UCv271PhLtsF1NWct6lBe0bUmQPUoi2q355udXN-QYY,13953
websockets/connection.py,sha256=uIRi5jeS3zVIWq8DcEDJPousrYNTItPe0ioKxBr2hOs,335
websockets/datastructures.py,sha256=zOgfJ9Ctt4MA4aWx1MJD7dHEjMiwu0Twj12nFE8tQ-g,5802
websockets/exceptions.py,sha256=XeYDSFdqdqI6bX66iWOhVhSZRDfI6ZKwMWccFWpgCkg,13284
websockets/extensions/__init__.py,sha256=HdQaQhOVkCR5RJVRKXG5Xmb6cMpAhLaKgRikYRzO64E,102
websockets/extensions/__pycache__/__init__.cpython-313.pyc,,
websockets/extensions/__pycache__/base.cpython-313.pyc,,
websockets/extensions/__pycache__/permessage_deflate.cpython-313.pyc,,
websockets/extensions/base.py,sha256=Je1VMBHq7_gqq5idsCqMPD87CI6m7zpDSRj_lCL37Rc,3026
websockets/extensions/permessage_deflate.py,sha256=nMAfbfogemSMwVWWK0CCO5CF0xcizSyyiSJlPSQ3Sgs,26408
websockets/frames.py,sha256=KumjH71OoXViDmk4ndpzcWUECHsqyUfJvCzzknt9NN4,13189
websockets/headers.py,sha256=2XFbUE0BzEIftBR2KS2ygeSRIYzPB-a-q35jfdcZ1MA,16632
websockets/http.py,sha256=pQmdzRiYK_SuiwvXIrP_rsJZAj8tGIol76e_TvsPUrg,679
websockets/http11.py,sha256=r8FadvqhWsUz50fz0_Mx_quSiyu2JxilCm4X8fXmwTU,15352
websockets/imports.py,sha256=oFdWkxypj_diuqneRuA5OWEXLMQ6pAtj-rKqFU6Pmdg,2895
websockets/legacy/__init__.py,sha256=VS5mRP7oS3kXCcXX7F3vPULmXPFi4VcyKbnv8Lk18MY,287
websockets/legacy/__pycache__/__init__.cpython-313.pyc,,
websockets/legacy/__pycache__/auth.cpython-313.pyc,,
websockets/legacy/__pycache__/client.cpython-313.pyc,,
websockets/legacy/__pycache__/exceptions.cpython-313.pyc,,
websockets/legacy/__pycache__/framing.cpython-313.pyc,,
websockets/legacy/__pycache__/handshake.cpython-313.pyc,,
websockets/legacy/__pycache__/http.cpython-313.pyc,,
websockets/legacy/__pycache__/protocol.cpython-313.pyc,,
websockets/legacy/__pycache__/server.cpython-313.pyc,,
websockets/legacy/auth.py,sha256=wILIJE28YsQKmQcWdPMzmdM_0Sw674dqUo2XGqyUvH4,6721
websockets/legacy/client.py,sha256=FEvbnmTV8lS5oHvqcoisgbocnmudEvQ8Rpuui86GOBg,27690
websockets/legacy/exceptions.py,sha256=KrvUEI31DUZs3gl6M-Q-dgsSnsMXzU_bDRuHU6AcKbc,1995
websockets/legacy/framing.py,sha256=k2ykZNh2kumsEC1cHk9XVIah9IYioRobziTpSLyDRv0,6591
websockets/legacy/handshake.py,sha256=CRRxkJ96TIgWuoMIL0iol4jp4X7llMA8buX4gfo0SwE,5443
websockets/legacy/http.py,sha256=OPu_UljFJH74nxk5V-jnOOkqzdXcpJ6M0LynIpuZ740,7262
websockets/legacy/protocol.py,sha256=YN1QdGYK1Tm-t902bo5PI0-WvMKklOeUqSdow1FGsbQ,65543
websockets/legacy/server.py,sha256=j6Q9e53WIwk5ku0xA98abWDa8SdodxAIpp_bn3yTjB4,46441
websockets/protocol.py,sha256=MYG7Tn7rFRxquLGqRQsGN2BS9mE7KGTyckbLoyznsfk,27295
websockets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/server.py,sha256=95htLVRjeP445WsnWkFw2IzlX6wF6Y609ko1gVm2-xo,22152
websockets/speedups.c,sha256=j9p_o0aR8U1dt7VXAFTOZzYlGjiSlHVrTujpEzqP19s,5989
websockets/speedups.cp313-win32.pyd,sha256=E4oV-W6q7mIwi6-swbgtoF84pBr_ZB1JZe4CfbkKnGU,10240
websockets/speedups.pyi,sha256=tYIifoH4Qponj6HT8rhk2MQOVrfBFW8T5SYcaxefOdA,56
websockets/streams.py,sha256=6D-YosVbTobUxFYtsS5rp53-Ig0CH7EAetoOP9XyD08,4198
websockets/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/sync/__pycache__/__init__.cpython-313.pyc,,
websockets/sync/__pycache__/client.cpython-313.pyc,,
websockets/sync/__pycache__/connection.cpython-313.pyc,,
websockets/sync/__pycache__/messages.cpython-313.pyc,,
websockets/sync/__pycache__/router.cpython-313.pyc,,
websockets/sync/__pycache__/server.cpython-313.pyc,,
websockets/sync/__pycache__/utils.cpython-313.pyc,,
websockets/sync/client.py,sha256=NjelUsmGfP6d4t4em8tNf67tzLFyOVJPXvAzV_cuwjI,23296
websockets/sync/connection.py,sha256=aoY4BfEG13hvWBFWSFH50iY_Er2RRIU6AFgKOvJE4FA,42646
websockets/sync/messages.py,sha256=W6Y-BZHgyuQ6hURDsZ2itewi5lAMJ9ld7X0wAlV2Zkk,12952
websockets/sync/router.py,sha256=E6h1ivLUM9DskHQBn7LWZQhvV3ybYqcFIEpsQ4UllD8,6483
websockets/sync/server.py,sha256=l3u-jxI0dETw69_YmaR0sA21B60lEPQTVgA6oIBZ8Gw,28199
websockets/sync/utils.py,sha256=JgQVxO_NcQXZd8m6hDeXpSQ_uN6GYF8u9XLHZ7msv3k,1152
websockets/typing.py,sha256=cLOjWn1jPgxQucORXZTMxSLZZN-fjD0qDcjaVjioZl4,2099
websockets/uri.py,sha256=_ZhWgzuL_ekGWGu8QFode_0rgLN2toz9u1MPu5opDa8,7211
websockets/utils.py,sha256=z3lSFywpnE4aifiJwYVPTgcwMLNDAkYDbdZUqkSwhPo,1201
websockets/version.py,sha256=n3qgevB3Sh6fD9Fy3vv8T6hVxiVj6V6IAPtfxqN_84Q,3296

View File

@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (75.8.2)
Root-Is-Purelib: false
Tag: cp313-cp313-win32

View File

@@ -0,0 +1,2 @@
[console_scripts]
websockets = websockets.cli:main

View File

@@ -0,0 +1 @@
websockets