feat: initial commit - Phase 1 & 2 core features

This commit is contained in:
hiderfong
2026-04-22 17:07:33 +08:00
commit 1773bda06b
25005 changed files with 6252106 additions and 0 deletions
@@ -0,0 +1,28 @@
Copyright (c) 2012, Mher Movsisyan and individual contributors.
All rights reserved.
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 Celery Flower 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 OWNER 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.
@@ -0,0 +1,138 @@
Metadata-Version: 2.1
Name: flower
Version: 2.0.1
Summary: Celery Flower
Home-page: https://github.com/mher/flower
Author: Mher Movsisyan
Author-email: mher.movsisyan@gmail.com
License: BSD
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Topic :: System :: Distributed Computing
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: celery (>=5.0.5)
Requires-Dist: tornado (<7.0.0,>=5.0.0)
Requires-Dist: prometheus-client (>=0.8.0)
Requires-Dist: humanize
Requires-Dist: pytz
Flower
======
.. image:: https://img.shields.io/pypi/dm/flower.svg
:target: https://pypistats.org/packages/flower
:alt: PyPI - Downloads
.. image:: https://img.shields.io/docker/pulls/mher/flower.svg
:target: https://hub.docker.com/r/mher/flower
:alt: Docker Pulls
.. image:: https://github.com/mher/flower/workflows/Build/badge.svg
:target: https://github.com/mher/flower/actions
.. image:: https://img.shields.io/pypi/v/flower.svg
:target: https://pypi.python.org/pypi/flower
Flower is an open-source web application for monitoring and managing Celery clusters.
It provides real-time information about the status of Celery workers and tasks.
Features
--------
- Real-time monitoring using Celery Events
- View task progress and history
- View task details (arguments, start time, runtime, and more)
- Remote Control
- View worker status and statistics
- Shutdown and restart worker instances
- Control worker pool size and autoscale settings
- View and modify the queues a worker instance consumes from
- View currently running tasks
- View scheduled tasks (ETA/countdown)
- View reserved and revoked tasks
- Apply time and rate limits
- Revoke or terminate tasks
- Broker monitoring
- View statistics for all Celery queues
- HTTP Basic Auth, Google, Github, Gitlab and Okta OAuth
- Prometheus integration
- API
Installation
------------
Installing `flower` with `pip <http://www.pip-installer.org/>`_ is simple ::
$ pip install flower
The development version can be installed from Github ::
$ pip install https://github.com/mher/flower/zipball/master#egg=flower
Usage
-----
To run Flower, you need to provide the broker URL ::
$ celery --broker=amqp://guest:guest@localhost:5672// flower
Or use the configuration of `celery application <https://docs.celeryq.dev/en/stable/userguide/application.html>`_ ::
$ celery -A tasks.app flower
By default, flower runs on port 5555, which can be modified with the `port` option ::
$ celery -A tasks.app flower --port=5001
You can also run Flower using the docker image ::
$ docker run -v examples:/data -p 5555:5555 mher/flower celery --app=tasks.app flower
In this example, Flower is using the `tasks.app` defined in the `examples/tasks.py <https://github.com/mher/flower/blob/master/examples/tasks.py>`_ file
API
---
Flower API enables to manage the cluster via HTTP `REST API`.
For example you can restart worker's pool by: ::
$ curl -X POST http://localhost:5555/api/worker/pool/restart/myworker
Or call a task by: ::
$ curl -X POST -d '{"args":[1,2]}' http://localhost:5555/api/task/async-apply/tasks.add
Or terminate executing task by: ::
$ curl -X POST -d 'terminate=True' http://localhost:5555/api/task/revoke/8a4da87b-e12b-4547-b89a-e92e4d1f8efd
For more info checkout `API Reference`_
.. _API Reference: https://flower.readthedocs.io/en/latest/api.html
Documentation
-------------
Documentation is available at `Read the Docs`_
.. _Read the Docs: https://flower.readthedocs.io
License
-------
Flower is licensed under BSD 3-Clause License.
See the `License`_ file for the full license text.
.. _`License`: https://github.com/mher/flower/blob/master/LICENSE
@@ -0,0 +1,79 @@
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/__init__.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/__main__.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/api/__init__.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/api/control.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/api/tasks.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/api/workers.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/app.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/command.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/events.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/inspector.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/options.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/urls.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/utils/__init__.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/utils/broker.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/utils/search.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/utils/tasks.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/utils/template.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/views/__init__.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/views/auth.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/views/broker.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/views/error.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/views/monitor.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/views/tasks.cpython-39.pyc,,
../../../../../../../../Library/Caches/com.apple.python/Users/nathan/Work/DataPointer/prop-data-guard/backend/.venv/lib/python3.9/site-packages/flower/views/workers.cpython-39.pyc,,
flower-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
flower-2.0.1.dist-info/LICENSE,sha256=NEUNs9zqKxIqK41et3KoulmZJ5qASLIlIMGccWo1Ldk,1545
flower-2.0.1.dist-info/METADATA,sha256=v0OhHsiBDmPz5fPJ9uNtD6doIC0oFdiM58My2Z2xqfk,4463
flower-2.0.1.dist-info/RECORD,,
flower-2.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
flower-2.0.1.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
flower-2.0.1.dist-info/entry_points.txt,sha256=GLDxx-fmAel_Xf5_YGhPnr2fR-liAg5SwteSNqVKbCI,49
flower-2.0.1.dist-info/top_level.txt,sha256=lNw1_tCnIQsJ9tmTp8B_Cchhy_ZzgOSRWLmXnOl_0FI,7
flower/__init__.py,sha256=67msgzZ7gzF2tc7oC1ej3Z0Ms9y3v20rSYCcXA1hkpw,62
flower/__main__.py,sha256=TNJsPbHIXEoHVPVabekJpSucynWRmyyDDfYUoXvEYqs,204
flower/api/__init__.py,sha256=Y_rxXwev8zY_kbZEcKgrJPEwH74OMliu7O5wf1grNek,780
flower/api/control.py,sha256=jTEeo2NtB610oVqTz0zVIBAAmYeI9NIIeGJ0lE4XWXw,15691
flower/api/tasks.py,sha256=-bhnRT76FF3AO8H-416iMsBrHMZJ4UYyJGM2utLTr78,17367
flower/api/workers.py,sha256=9ker99EnH5UHk9d7K3RohwUbcoxvSm8-QM0WEAf_RDo,5541
flower/app.py,sha256=nJaqIqw9Bi1-PJp-_n0_C0owLTX0STxnsZXnMCfGnvI,3500
flower/command.py,sha256=CW4Zhelu54j49mGBUnkyzx03AAp5Q_XOLpD8IT25cKY,5858
flower/events.py,sha256=TV7Pw3HP39sYLG2L9rzuZNshz_BhegvVMKRhmRoW-gk,7502
flower/inspector.py,sha256=ueS_qFglBWSXjLabzKiMHTxn93zLDdjCu-fk8i-_fhA,1689
flower/options.py,sha256=3vU6cOOl3hZNMCJ5guBmiulauKsHjAitPc8PikdRe_M,3216
flower/static/css/bootstrap.min.css,sha256=gbG8ox_dDWTCGdkgAHyXPLQXWldRTFyMSKSsnN3iQS8,193591
flower/static/css/bootstrap.min.css.map,sha256=k6PVUR9d67eMC-ZsJVc5xqIuGB5q2OzCp4PDDR2N8xQ,48034
flower/static/css/datatables-1.13.4.min.css,sha256=tNQIt9xV7iK9HOjZvrVRWlV9tWjlP3ZROe7YiR93ucE,19876
flower/static/css/flower.css,sha256=E1pDl8a4jdcMTSkYi359aI-PewyV1IxV2mL5ziefF2s,582
flower/static/favicon.ico,sha256=XT4jM6_QpyokxISYVDia_Fg5CiWamoALC40fDc33vpg,4286
flower/static/js/bootstrap.bundle.min.js,sha256=xEsTjxachfMrqtir33rW-YjAVvb8JgOehvlntj9HoKs,80420
flower/static/js/bootstrap.bundle.min.js.map,sha256=GSH9nQGDQNh9D2nORvaKUuolz5n-lrmOHedM_P-WVZw,333078
flower/static/js/datatables-1.13.4.min.js,sha256=DfifVTKb7zc4uFv7iaobPFQM9uRkozwXNrQkM6YqvC4,87751
flower/static/js/flower.js,sha256=yCfmnso51Q-ulY9y0GaEBKOZadnyyltxKjLRlwCH3Tk,23121
flower/static/js/jquery-3.6.4.min.js,sha256=oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl-cbzUq8,89795
flower/static/js/jquery-3.6.4.min.map,sha256=Jf9u3yz-ACtkOBuXuDS1wk2TknVeKfT9Oa_hY9Z6Adk,138363
flower/static/js/moment-2.29.4.min.js,sha256=80OqMZoXo_w3LuatWvSCub9qKYyyJlK0qnUCYEghBx8,58103
flower/static/js/moment-timezone-with-data-2.29.4.min.js,sha256=EgLHsIgdfFq_VysQCLA2HPSFKY3aVzSne3kZ7NgJ0Gs,780925
flower/static/swagger.json,sha256=K52K8JlhuG72STmiBEGYyy5CbczbdKLxj8J3W0OiK4o,12574
flower/templates/404.html,sha256=nLsPKFryU0naMTuFsT8WrldYwfBJJHtTm-omdWI3P9M,262
flower/templates/base.html,sha256=iojeUTb5JrRKhLH_LQOWqbUAuVZRFLHq2iEB7ocpXSM,1257
flower/templates/broker.html,sha256=VmSCCgweyIKF2rnHFtCiuq80zp5Zv9wwU64Drp_WBAU,1073
flower/templates/error.html,sha256=8HgOuGX6bEF29lRKtuiaLTidkH481ZR9bm_5WIAwtRs,487
flower/templates/navbar.html,sha256=tQGTX_fgjH-0ZtKQ0jp9Cnr2wR7GqV9MFQmcCYBRY98,2519
flower/templates/task.html,sha256=OWgvmBY1cYR62w_RwIJAGC5TId-iyJ9GDs2DeDW_EoI,3621
flower/templates/tasks.html,sha256=cPaLLEyNHlXedQOqWTor7HxNhLvXLdk3EDgit0Tfacs,2095
flower/templates/worker.html,sha256=PfiBhPsMHYhrKUIgnu6D63Gp2EfVQs694ObaWgUYKAk,17329
flower/templates/workers.html,sha256=uXFvmwVvx9ssTZgmnO7ESOTHdYQn9h6cPMI-yIX6Mpo,1656
flower/urls.py,sha256=WXUZaT1ChlRY7IjwVAoQYuyg_zMYnR6TPzZYH7o2Z5U,2436
flower/utils/__init__.py,sha256=T_DBs5cpMoLgpbLVybUnX-qKIdX-dfP3Jn7sP_WLAdg,1523
flower/utils/broker.py,sha256=XEfd-CMu0IhkUAkrQcecV3duq2aIjsyZeSOaJUT0rnU,8892
flower/utils/search.py,sha256=Akhz96yi2-eBiFhaFyB-a_mhR0Ox8c4NgbZ5_tPipoA,3627
flower/utils/tasks.py,sha256=uOi-5Yw80xnn2azkqNUXWLJYlxnpLhfWdJGYXuWA8b8,2208
flower/utils/template.py,sha256=k3kaDRsXKa3wvR0AkKdDQn6zp0Urh5cQ7Wf0QrP6LZg,1682
flower/views/__init__.py,sha256=p1MU54dXd-2OzG0Zdqh7epHJY3nkvLU75P6cX0kWaH4,5133
flower/views/auth.py,sha256=Y_dLse4SuAbCh4om9IiPeGTU8QuI4hxMTC6n09AKrys,13517
flower/views/broker.py,sha256=cBMEn3dPnAMYcm4Exg6BUgf8qgze3qH8LQ-bh82jph4,1143
flower/views/error.py,sha256=S2IDkGBeMBgfx48zA26TZyVGnrPLmyEAYyI1Ee_oxgs,217
flower/views/monitor.py,sha256=prFugBJOIXNg8P0x6U2MD59PKkO2MaI_bntmQMgsnOs,307
flower/views/tasks.py,sha256=D5bVz5uPajq1fsU1twtFk95G1rD5G5TV9Y2IP8WT1b4,3710
flower/views/workers.py,sha256=MNBpCVIY7k3CgBLv9KHHHX3svtolMbc270rNyJX9j04,3072
@@ -0,0 +1,6 @@
Wheel-Version: 1.0
Generator: bdist_wheel (0.40.0)
Root-Is-Purelib: true
Tag: py2-none-any
Tag: py3-none-any
@@ -0,0 +1,2 @@
[celery.commands]
flower = flower.command:flower