funboost 48.6__tar.gz → 48.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of funboost might be problematic. Click here for more details.
- {funboost-48.6/funboost.egg-info → funboost-48.8}/PKG-INFO +7 -3
- {funboost-48.6 → funboost-48.8}/README.md +12 -2
- {funboost-48.6 → funboost-48.8}/funboost/__init__.py +2 -2
- {funboost-48.6 → funboost-48.8}/funboost/__main__.py +2 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/async_pool_executor.py +1 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/flexible_thread_pool.py +1 -0
- {funboost-48.6 → funboost-48.8}/funboost/constant.py +2 -1
- {funboost-48.6 → funboost-48.8}/funboost/consumers/base_consumer.py +4 -3
- {funboost-48.6 → funboost-48.8}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +1 -1
- {funboost-48.6 → funboost-48.8}/funboost/core/active_cousumer_info_getter.py +3 -3
- {funboost-48.6 → funboost-48.8}/funboost/core/booster.py +1 -1
- {funboost-48.6 → funboost-48.8}/funboost/core/cli/funboost_fire.py +10 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/msg_result_getter.py +1 -0
- funboost-48.8/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
- funboost-48.8/funboost/function_result_web/__pycache__/app.cpython-39.pyc +0 -0
- funboost-48.8/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- funboost-48.8/funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/app.py +42 -2
- funboost-48.8/funboost/function_result_web/app_debug_start.py +6 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/functions.py +57 -3
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/js_cdn/tabulator-tables@5.5.0/dist/js/tabulator.min.js +1 -1
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/about.html +0 -9
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/conusme_speed.html +2 -2
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/fun_result_table.html +1 -1
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/index.html +34 -9
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/queue_op.html +1 -1
- funboost-48.8/funboost/function_result_web/templates/rpc_call.html +298 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/running_consumer_by_ip.html +2 -2
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/running_consumer_by_queue_name.html +2 -2
- {funboost-48.6 → funboost-48.8}/funboost/timing_job/apscheduler_use_redis_store.py +1 -1
- {funboost-48.6 → funboost-48.8}/funboost/timing_job/timing_job_base.py +2 -0
- {funboost-48.6 → funboost-48.8}/funboost/timing_job/timing_push.py +10 -4
- funboost-48.8/funboost/utils/ctrl_c_end.py +37 -0
- funboost-48.8/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-313.pyc +0 -0
- funboost-48.8/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-313.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +6 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/readme.md +6 -0
- {funboost-48.6 → funboost-48.8/funboost.egg-info}/PKG-INFO +7 -3
- {funboost-48.6 → funboost-48.8}/funboost.egg-info/SOURCES.txt +4 -0
- funboost-48.6/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
- funboost-48.6/funboost/function_result_web/__pycache__/app.cpython-39.pyc +0 -0
- funboost-48.6/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- funboost-48.6/funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
- funboost-48.6/funboost/utils/ctrl_c_end.py +0 -19
- {funboost-48.6 → funboost-48.8}/LICENSE +0 -0
- {funboost-48.6 → funboost-48.8}/MANIFEST.in +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/__init__old.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/celery_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/dramatiq_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/faststream_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/huey_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/rocketry_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/rq_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/rq_windows_worker.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/assist/taskiq_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/async_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/backup/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/backup/grok_async_pool.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/base_pool_type.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/pool_commons.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/concurrent_pool/single_thread_executor.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/celery_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/confirm_mixin.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/dramatiq_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/empty_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/faststream_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/http_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/http_consumer000.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/httpsqs_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/huey_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/kafka_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/kombu_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/local_python_queue_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/memory_deque_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/mongomq_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/mqtt_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/nameko_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/nats_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/nsq_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/peewee_conusmer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/persist_queue_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/pulsar_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_consumer_ack_able.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_consumer_ack_using_timeout.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_consumer_priority.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_consumer_simple.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_filter.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_pubsub_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/redis_stream_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/rocketmq_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/rq_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/sqlachemy_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/tcp_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/txt_file_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/udp_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/consumers/zeromq_consumer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/contrib/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/contrib/api_publish_msg.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/contrib/django_db_deco.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/contrib/queue2queue.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/cli/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/cli/discovery_boosters.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/current_task.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/exceptions.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/fabric_deploy_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/funboost_config_getter.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/funboost_time.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/func_params_model.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/function_result_status_config.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/function_result_status_saver.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/helper_funs.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/kill_remote_task.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/lazy_impoter.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/loggers.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/muliti_process_enhance.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/serialization.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/core/task_id_logger.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/factories/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/factories/consumer_factory.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/factories/publisher_factotry.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/funboost_config_deafult.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/assets/css/custom.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/assets/js/custom.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css/content_page_style.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css/style.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/css/font-awesome.min.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/FontAwesome.otf +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.eot +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.svg +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/select2/4.0.13/css/select2.min.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator.min.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator_bootstrap3.min.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/css/bootstrap.min.css +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.eot +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.svg +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.ttf +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/images/bg.jpg +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/images/favicon.ico +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/images/password.png +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/images/tick.png +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/images/user.png +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/js/bootstrap-datetimepicker.min.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/js/echarts.min.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/js/moment-with-locales.min.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/js/select2.min.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/static/js_cdn/bootstrap/3.3.7/js/bootstrap.min.js +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/index_backup.html +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/index_/344/270/215/345/217/257/346/212/230/345/217/240.html" +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/function_result_web/templates/login.html +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/base_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/celery_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/celery_publisher000.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/confluent_kafka_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/dramatiq_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/empty_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/faststream_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/http_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/httpsqs_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/huey_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/kafka_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/kombu_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/local_python_queue_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/meomory_deque_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/mongomq_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/mqtt_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/nameko_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/nats_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/nsq_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/peewee_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/persist_queue_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/pulsar_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/redis_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/redis_publisher_lpush.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/redis_publisher_priority.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/redis_publisher_simple.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/redis_pubsub_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/redis_stream_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/rocketmq_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/rq_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/sqla_queue_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/tcp_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/txt_file_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/udp_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/publishers/zeromq_publisher.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/queues/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/queues/memory_queues_map.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/queues/peewee_queue.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/queues/sqla_queue.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/set_frame_config.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/timing_job/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/apscheduler_monkey.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/block_exit.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/bulk_operation.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/class_utils.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/class_utils2.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/custom_pysnooper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/decorators.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc2222.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/develop_log.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/expire_lock.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/func_timeout/StoppableThread.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/func_timeout/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/func_timeout/dafunc.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/func_timeout/exceptions.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/func_timeout/py2_raise.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/func_timeout/py3_raise.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/json_helper.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/mongo_util.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/monkey_color_log.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/monkey_patches.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/mqtt_util.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/paramiko_util.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/pysnooper_ydf/utils.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/pysnooper_ydf/variables.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/rabbitmq_factory.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/redis_manager.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/redis_manager_old.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/resource_monitoring.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/restart_python.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/simple_data_class.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/str_utils.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/time_util.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/times/__init__.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/times/version.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost/utils/un_strict_json_dumps.py +0 -0
- {funboost-48.6 → funboost-48.8}/funboost.egg-info/dependency_links.txt +0 -0
- {funboost-48.6 → funboost-48.8}/funboost.egg-info/entry_points.txt +0 -0
- {funboost-48.6 → funboost-48.8}/funboost.egg-info/requires.txt +0 -0
- {funboost-48.6 → funboost-48.8}/funboost.egg-info/top_level.txt +0 -0
- {funboost-48.6 → funboost-48.8}/setup.cfg +0 -0
- {funboost-48.6 → funboost-48.8}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 48.
|
|
3
|
+
Version: 48.8
|
|
4
4
|
Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,funboost web manager 方便查看和管理消费函数;99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
|
|
5
5
|
Home-page: https://github.com/ydf0509/funboost
|
|
6
6
|
Author: bfzs
|
|
@@ -535,17 +535,21 @@ funboost web manager 截图:
|
|
|
535
535
|
函数消费结果:可查看和搜索函数实时消费状态和结果
|
|
536
536
|
[](https://imgse.com/i/pEJCffK)
|
|
537
537
|
|
|
538
|
+
消费速度图:可查看实时和历史消费速度
|
|
539
|
+
[](https://imgse.com/i/pEJCWY6)
|
|
540
|
+
|
|
538
541
|
运行中消费者 by ip: 根据ip搜索有哪些消费者
|
|
539
542
|
[](https://imgse.com/i/pEJCRFx)
|
|
540
543
|
|
|
541
544
|
|
|
542
|
-
|
|
545
|
+
队列操作:查看和操作队列,包括 清空清空 暂停消费 恢复消费 调整qps和并发
|
|
543
546
|
[](https://imgse.com/i/pEJC6m9)
|
|
544
547
|
|
|
545
548
|
队列操作,查看消费者详情:查看队列的所有消费者详情
|
|
546
549
|
[](https://imgse.com/i/pEJCgT1)
|
|
547
550
|
|
|
548
|
-
|
|
551
|
+
rpc调用:
|
|
552
|
+
[](https://imgse.com/i/pETq8hj)
|
|
549
553
|
|
|
550
554
|
## 1.4 python分布式函数执行为什么重要?
|
|
551
555
|
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
noteId: "aa56d860240511f0b39f3b947bbde921"
|
|
3
|
+
tags: []
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
1
7
|
|
|
2
8
|
|
|
3
9
|
# 1.python万能分布式函数调度框架简funboost简介
|
|
@@ -415,17 +421,21 @@ funboost web manager 截图:
|
|
|
415
421
|
函数消费结果:可查看和搜索函数实时消费状态和结果
|
|
416
422
|
[](https://imgse.com/i/pEJCffK)
|
|
417
423
|
|
|
424
|
+
消费速度图:可查看实时和历史消费速度
|
|
425
|
+
[](https://imgse.com/i/pEJCWY6)
|
|
426
|
+
|
|
418
427
|
运行中消费者 by ip: 根据ip搜索有哪些消费者
|
|
419
428
|
[](https://imgse.com/i/pEJCRFx)
|
|
420
429
|
|
|
421
430
|
|
|
422
|
-
|
|
431
|
+
队列操作:查看和操作队列,包括 清空清空 暂停消费 恢复消费 调整qps和并发
|
|
423
432
|
[](https://imgse.com/i/pEJC6m9)
|
|
424
433
|
|
|
425
434
|
队列操作,查看消费者详情:查看队列的所有消费者详情
|
|
426
435
|
[](https://imgse.com/i/pEJCgT1)
|
|
427
436
|
|
|
428
|
-
|
|
437
|
+
rpc调用:
|
|
438
|
+
[](https://imgse.com/i/pETq8hj)
|
|
429
439
|
|
|
430
440
|
## 1.4 python分布式函数执行为什么重要?
|
|
431
441
|
|
|
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
|
|
|
13
13
|
这段注释说明和使用的用户无关,只和框架开发人员有关.
|
|
14
14
|
'''
|
|
15
15
|
|
|
16
|
-
__version__ = "48.
|
|
16
|
+
__version__ = "48.8"
|
|
17
17
|
|
|
18
18
|
from funboost.set_frame_config import show_frame_config
|
|
19
19
|
|
|
@@ -26,7 +26,7 @@ from funboost.core.func_params_model import (BoosterParams, BoosterParamsComplet
|
|
|
26
26
|
PriorityConsumingControlConfig, PublisherParams, BoosterParamsComplete)
|
|
27
27
|
from funboost.funboost_config_deafult import FunboostCommonConfig, BrokerConnConfig
|
|
28
28
|
|
|
29
|
-
from funboost.core.fabric_deploy_helper import fabric_deploy, kill_all_remote_tasks
|
|
29
|
+
# from funboost.core.fabric_deploy_helper import fabric_deploy, kill_all_remote_tasks # fabric2还没适配python3.12以上版本,不在这里导入,否则高版本python报错。
|
|
30
30
|
from funboost.utils.paramiko_util import ParamikoFolderUploader
|
|
31
31
|
|
|
32
32
|
from funboost.consumers.base_consumer import (wait_for_possible_has_finish_all_tasks_by_conusmer_list,
|
|
@@ -18,6 +18,7 @@ def _check_pass_params():
|
|
|
18
18
|
|
|
19
19
|
def main():
|
|
20
20
|
_check_pass_params()
|
|
21
|
+
|
|
21
22
|
|
|
22
23
|
fire.Fire(BoosterFire, )
|
|
23
24
|
|
|
@@ -31,4 +32,5 @@ python -m funboost --project_root_path=/codes/funboost --booster_dirs_str=tes
|
|
|
31
32
|
python -m funboost --project_root_path=/codes/funboost --booster_dirs_str=test_frame/test_funboost_cli/test_find_boosters --max_depth=2 push test_find_queue1 --x=1 --y=2
|
|
32
33
|
|
|
33
34
|
|
|
35
|
+
python -m funboost --project_root_path=/codes/funboost start_web
|
|
34
36
|
'''
|
|
@@ -61,6 +61,7 @@ class AsyncPoolExecutorLtPy310(FunboostFileLoggerMixin,FunboostBaseConcurrentPoo
|
|
|
61
61
|
"""
|
|
62
62
|
self._size = size
|
|
63
63
|
self.loop = loop or asyncio.new_event_loop()
|
|
64
|
+
asyncio.set_event_loop(self.loop)
|
|
64
65
|
self._sem = asyncio.Semaphore(self._size, loop=self.loop)
|
|
65
66
|
self._queue = asyncio.Queue(maxsize=size, loop=self.loop)
|
|
66
67
|
self._lock = threading.Lock()
|
|
@@ -59,6 +59,7 @@ def run_sync_or_async_fun000(func, *args, **kwargs):
|
|
|
59
59
|
fun_is_asyncio = inspect.iscoroutinefunction(func)
|
|
60
60
|
if fun_is_asyncio:
|
|
61
61
|
loop = asyncio.new_event_loop()
|
|
62
|
+
asyncio.set_event_loop(loop)
|
|
62
63
|
try:
|
|
63
64
|
return loop.run_until_complete(func(*args, **kwargs))
|
|
64
65
|
finally:
|
|
@@ -112,4 +112,5 @@ class ConstStrForClassMethod:
|
|
|
112
112
|
class RedisKeys:
|
|
113
113
|
REDIS_KEY_PAUSE_FLAG = 'funboost_pause_flag'
|
|
114
114
|
REDIS_KEY_STOP_FLAG = 'funboost_stop_flag'
|
|
115
|
-
QUEUE__MSG_COUNT_MAP = 'funboost_queue__msg_count_map'
|
|
115
|
+
QUEUE__MSG_COUNT_MAP = 'funboost_queue__msg_count_map'
|
|
116
|
+
FUNBOOST_QUEUE__CONSUMER_PARAMS= 'funboost_queue__consumer_parmas'
|
|
@@ -165,6 +165,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
165
165
|
self._redis_filter = filter_class(self._redis_filter_key_name, consumer_params.task_filtering_expire_seconds)
|
|
166
166
|
|
|
167
167
|
self._lock_for_count_execute_task_times_every_unit_time = Lock()
|
|
168
|
+
self._async_lock_for_count_execute_task_times_every_unit_time = asyncio.Lock()
|
|
168
169
|
# self._unit_time_for_count = 10 # 每隔多少秒计数,显示单位时间内执行多少次,暂时固定为10秒。
|
|
169
170
|
# self._execute_task_times_every_unit_time = 0 # 每单位时间执行了多少次任务。
|
|
170
171
|
# self._execute_task_times_every_unit_time_fail =0 # 每单位时间执行了多少次任务失败。
|
|
@@ -836,8 +837,8 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
836
837
|
if (current_function_result_status.success is False and current_retry_times == max_retry_times) or current_function_result_status.success is True:
|
|
837
838
|
await simple_run_in_executor(push_result)
|
|
838
839
|
|
|
839
|
-
|
|
840
|
-
|
|
840
|
+
async with self._async_lock_for_count_execute_task_times_every_unit_time:
|
|
841
|
+
self.metric_calculation.cal(t_start_run_fun, current_function_result_status)
|
|
841
842
|
|
|
842
843
|
self.user_custom_record_process_info_func(current_function_result_status) # 两种方式都可以自定义,记录结果.建议使用文档4.21.b的方式继承来重写
|
|
843
844
|
await self.aio_user_custom_record_process_info_func(current_function_result_status)
|
|
@@ -1175,7 +1176,7 @@ class MetricCalculation:
|
|
|
1175
1176
|
self.consumer._distributed_consumer_statistics.active_consumer_num)
|
|
1176
1177
|
msg += f''' 预计还需要 {need_time} 时间 才能执行完成 队列 {self.consumer.queue_name} 中的 {self.msg_num_in_broker} 个剩余任务'''
|
|
1177
1178
|
self.consumer.logger.info(msg)
|
|
1178
|
-
|
|
1179
|
+
self.last_show_remaining_execution_time = time.time()
|
|
1179
1180
|
self.current_time_for_execute_task_times_every_unit_time = time.time()
|
|
1180
1181
|
self.consuming_function_cost_time_total_every_unit_time_tmp = 0
|
|
1181
1182
|
self.execute_task_times_every_unit_time_temp = 0
|
|
@@ -104,12 +104,12 @@ class QueueConusmerParamsGetter(RedisMixin, FunboostFileLoggerMixin):
|
|
|
104
104
|
queue__pause_map = self.redis_db_frame.hgetall(RedisKeys.REDIS_KEY_PAUSE_FLAG)
|
|
105
105
|
return {k:int(v) for k,v in queue__pause_map.items()}
|
|
106
106
|
|
|
107
|
-
def get_msg_num(self):
|
|
107
|
+
def get_msg_num(self,ignore_report_ts=False):
|
|
108
108
|
queue__msg_count_info_map = self.redis_db_frame.hgetall(RedisKeys.QUEUE__MSG_COUNT_MAP)
|
|
109
109
|
queue__msg_count_dict = {}
|
|
110
110
|
for queue_name,info_json in queue__msg_count_info_map.items():
|
|
111
111
|
info_dict = json.loads(info_json)
|
|
112
|
-
if info_dict['report_ts'] > time.time() - 15 and info_dict['last_get_msg_num_ts'] > time.time() - 1200:
|
|
112
|
+
if ignore_report_ts or (info_dict['report_ts'] > time.time() - 15 and info_dict['last_get_msg_num_ts'] > time.time() - 1200):
|
|
113
113
|
queue__msg_count_dict[queue_name] = info_dict['msg_num_in_broker']
|
|
114
114
|
return queue__msg_count_dict
|
|
115
115
|
|
|
@@ -127,7 +127,7 @@ class QueueConusmerParamsGetter(RedisMixin, FunboostFileLoggerMixin):
|
|
|
127
127
|
queue__active_consumers_map = ActiveCousumerProcessInfoGetter().get_all_hearbeat_info_partition_by_queue_name()
|
|
128
128
|
queue__consumer_params_map = self.get_queue_params()
|
|
129
129
|
queue__pause_map = self.get_pause_flag()
|
|
130
|
-
queue__msg_count_dict = self.get_msg_num()
|
|
130
|
+
queue__msg_count_dict = self.get_msg_num(ignore_report_ts=True)
|
|
131
131
|
queue_params_and_active_consumers = {}
|
|
132
132
|
|
|
133
133
|
for queue, consumer_params in queue__consumer_params_map.items():
|
|
@@ -307,7 +307,7 @@ class BoostersManager:
|
|
|
307
307
|
跨不同的项目,发布消息。例如proj1中定义有fun1消费函数,但proj2无法直接到日proj1的函数,无法直接 fun1.push 来发布消息
|
|
308
308
|
可以使用这个方法,获取一个publisher。
|
|
309
309
|
|
|
310
|
-
publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name='proj1_queue', broker_kind=
|
|
310
|
+
publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name='proj1_queue', broker_kind=publisher_params.broker_kind))
|
|
311
311
|
publisher.publish({'x': aaa})
|
|
312
312
|
"""
|
|
313
313
|
pid = os.getpid()
|
|
@@ -127,3 +127,13 @@ class BoosterFire(object):
|
|
|
127
127
|
"""
|
|
128
128
|
for queue_name in queue_names:
|
|
129
129
|
BoostersManager.get_booster(queue_name).continue_consume()
|
|
130
|
+
|
|
131
|
+
def start_funboost_web_manager(self):
|
|
132
|
+
"""
|
|
133
|
+
启动funboost web管理器;
|
|
134
|
+
例子: start_funboost_web_manager
|
|
135
|
+
"""
|
|
136
|
+
from funboost.function_result_web.app import start_funboost_web_manager
|
|
137
|
+
start_funboost_web_manager()
|
|
138
|
+
|
|
139
|
+
start_web = start_funboost_web_manager
|
|
@@ -52,6 +52,7 @@ class AsyncResult(RedisMixin):
|
|
|
52
52
|
@property
|
|
53
53
|
def status_and_result(self):
|
|
54
54
|
if not self._has_pop:
|
|
55
|
+
# print(f'{self.task_id} 正在等待结果')
|
|
55
56
|
redis_value = self.redis_db_filter_and_rpc_result.blpop(self.task_id, self.timeout)
|
|
56
57
|
self._has_pop = True
|
|
57
58
|
if redis_value is not None:
|
|
@@ -12,6 +12,9 @@ import os
|
|
|
12
12
|
|
|
13
13
|
import datetime
|
|
14
14
|
import json
|
|
15
|
+
import traceback
|
|
16
|
+
|
|
17
|
+
from funboost.core.func_params_model import PriorityConsumingControlConfig
|
|
15
18
|
|
|
16
19
|
"""
|
|
17
20
|
pip install Flask flask_bootstrap flask_wtf wtforms flask_login
|
|
@@ -26,6 +29,7 @@ from flask_login import login_user, logout_user, login_required, LoginManager, U
|
|
|
26
29
|
import nb_log
|
|
27
30
|
from funboost import nb_print,ActiveCousumerProcessInfoGetter,BoostersManager,PublisherParams,RedisMixin
|
|
28
31
|
from funboost.function_result_web.functions import get_cols, query_result, get_speed, Statistic
|
|
32
|
+
from funboost.function_result_web import functions as app_functions
|
|
29
33
|
from funboost.core.active_cousumer_info_getter import QueueConusmerParamsGetter
|
|
30
34
|
from funboost.constant import RedisKeys
|
|
31
35
|
|
|
@@ -119,7 +123,8 @@ def logout():
|
|
|
119
123
|
@app.route('/')
|
|
120
124
|
@login_required
|
|
121
125
|
def index():
|
|
122
|
-
|
|
126
|
+
page = request.args.get('page')
|
|
127
|
+
return render_template('index.html', page=page)
|
|
123
128
|
|
|
124
129
|
|
|
125
130
|
@app.route('/query_cols')
|
|
@@ -238,6 +243,39 @@ def resume_consume(queue_name):
|
|
|
238
243
|
RedisMixin().redis_db_frame.hset(RedisKeys.REDIS_KEY_PAUSE_FLAG, queue_name,'0')
|
|
239
244
|
return jsonify({'success':True})
|
|
240
245
|
|
|
246
|
+
@app.route('/queue/get_msg_num',methods=['GET'])
|
|
247
|
+
def get_msg_num():
|
|
248
|
+
return jsonify(QueueConusmerParamsGetter().get_msg_num(ignore_report_ts=True))
|
|
249
|
+
|
|
250
|
+
@app.route('/rpc/rpc_call',methods=['POST'])
|
|
251
|
+
def rpc_call():
|
|
252
|
+
"""
|
|
253
|
+
class MsgItem(BaseModel):
|
|
254
|
+
queue_name: str # 队列名
|
|
255
|
+
msg_body: dict # 消息体,就是boost函数的入参字典,例如 {"x":1,"y":2}
|
|
256
|
+
need_result: bool = False # 发布消息后,是否需要返回结果
|
|
257
|
+
timeout: int = 60 # 等待结果返回的最大等待时间.
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
class PublishResponse(BaseModel):
|
|
261
|
+
succ: bool
|
|
262
|
+
msg: str
|
|
263
|
+
status_and_result: typing.Optional[dict] = None # 消费函数的消费状态和结果.
|
|
264
|
+
task_id:str
|
|
265
|
+
"""
|
|
266
|
+
|
|
267
|
+
msg_item = request.get_json()
|
|
268
|
+
return jsonify(app_functions.rpc_call(**msg_item))
|
|
269
|
+
|
|
270
|
+
@app.route('/rpc/get_result_by_task_id',methods=['GET'])
|
|
271
|
+
def get_result_by_task_id():
|
|
272
|
+
res = app_functions.get_result_by_task_id(task_id=request.args.get('task_id'),
|
|
273
|
+
timeout=request.args.get('timeout') or 60)
|
|
274
|
+
if res['status_and_result'] is None:
|
|
275
|
+
return jsonify({'succ':False,'msg':'task_id不存在或者超时或者结果已经过期'})
|
|
276
|
+
return jsonify(res)
|
|
277
|
+
|
|
278
|
+
|
|
241
279
|
def start_funboost_web_manager(host='0.0.0.0', port=27018,block=False):
|
|
242
280
|
print('start_funboost_web_manager , sys.path :', sys.path)
|
|
243
281
|
def _start_funboost_web_manager():
|
|
@@ -246,7 +284,9 @@ def start_funboost_web_manager(host='0.0.0.0', port=27018,block=False):
|
|
|
246
284
|
_start_funboost_web_manager()
|
|
247
285
|
else:
|
|
248
286
|
threading.Thread(target=_start_funboost_web_manager).start()
|
|
249
|
-
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
250
290
|
if __name__ == '__main__':
|
|
251
291
|
# app.jinja_env.auto_reload = True
|
|
252
292
|
# with app.test_request_context():
|
|
@@ -6,9 +6,16 @@ import json
|
|
|
6
6
|
from pprint import pprint
|
|
7
7
|
import time
|
|
8
8
|
import copy
|
|
9
|
+
import traceback
|
|
9
10
|
from funboost import nb_print
|
|
11
|
+
from funboost.constant import RedisKeys
|
|
12
|
+
from funboost.core.booster import BoostersManager
|
|
13
|
+
from funboost.core.func_params_model import PriorityConsumingControlConfig, PublisherParams
|
|
14
|
+
from funboost.core.msg_result_getter import AsyncResult
|
|
15
|
+
from funboost.core.serialization import Serialization
|
|
10
16
|
from funboost.utils import time_util, decorators, LoggerMixin
|
|
11
17
|
from funboost.utils.mongo_util import MongoMixin
|
|
18
|
+
from funboost.utils.redis_manager import RedisMixin
|
|
12
19
|
|
|
13
20
|
# from test_frame.my_patch_frame_config import do_patch_frame_config
|
|
14
21
|
#
|
|
@@ -144,6 +151,46 @@ class Statistic(LoggerMixin):
|
|
|
144
151
|
t2.strftime('%Y-%m-%d %H:%M:%S'))
|
|
145
152
|
self.result['recent_60_seconds']['count_arr'].append(count)
|
|
146
153
|
|
|
154
|
+
def rpc_call(queue_name, msg_body, need_result, timeout):
|
|
155
|
+
|
|
156
|
+
status_and_result = None
|
|
157
|
+
task_id = None
|
|
158
|
+
try:
|
|
159
|
+
boost_params_json = RedisMixin().redis_db_frame.hget(RedisKeys.FUNBOOST_QUEUE__CONSUMER_PARAMS,queue_name)
|
|
160
|
+
boost_params_dict = Serialization.to_dict(boost_params_json)
|
|
161
|
+
broker_kind = boost_params_dict['broker_kind']
|
|
162
|
+
publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name=queue_name,
|
|
163
|
+
broker_kind=broker_kind,
|
|
164
|
+
publish_msg_log_use_full_msg=True))
|
|
165
|
+
|
|
166
|
+
if need_result:
|
|
167
|
+
# if booster.boost_params.is_using_rpc_mode is False:
|
|
168
|
+
# raise ValueError(f' need_result 为true,{booster.queue_name} 队列消费者 需要@boost设置支持rpc模式')
|
|
169
|
+
|
|
170
|
+
async_result = publisher.publish(msg_body,priority_control_config=PriorityConsumingControlConfig(is_using_rpc_mode=True))
|
|
171
|
+
async_result.set_timeout(timeout)
|
|
172
|
+
status_and_result = async_result.status_and_result
|
|
173
|
+
# print(status_and_result)
|
|
174
|
+
task_id = async_result.task_id
|
|
175
|
+
else:
|
|
176
|
+
async_result =publisher.publish(msg_body)
|
|
177
|
+
task_id = async_result.task_id
|
|
178
|
+
return dict(succ=True, msg=f'{queue_name} 队列,消息发布成功',
|
|
179
|
+
status_and_result=status_and_result,task_id=task_id)
|
|
180
|
+
except Exception as e:
|
|
181
|
+
return dict(succ=False, msg=f'{queue_name} 队列,消息发布失败 {type(e)} {e} {traceback.format_exc()}',
|
|
182
|
+
status_and_result=status_and_result,task_id=task_id)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def get_result_by_task_id(task_id,timeout):
|
|
186
|
+
async_result = AsyncResult(task_id)
|
|
187
|
+
async_result.set_timeout(timeout)
|
|
188
|
+
status_and_result = async_result.status_and_result
|
|
189
|
+
return dict(succ=True, msg=f'task_id:{task_id} 获取结果成功',
|
|
190
|
+
status_and_result=status_and_result,task_id=task_id)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
147
194
|
|
|
148
195
|
if __name__ == '__main__':
|
|
149
196
|
# print(get_cols('4'))
|
|
@@ -152,6 +199,13 @@ if __name__ == '__main__':
|
|
|
152
199
|
# nb_print(get_speed_last_minute('queue_test54'))
|
|
153
200
|
|
|
154
201
|
# nb_print(get_speed('queue_test56', '2019-09-18 16:03:29', '2019-09-23 16:03:29'))
|
|
155
|
-
stat = Statistic('queue_test_f01t')
|
|
156
|
-
stat.build_result()
|
|
157
|
-
nb_print(stat.result)
|
|
202
|
+
# stat = Statistic('queue_test_f01t')
|
|
203
|
+
# stat.build_result()
|
|
204
|
+
# nb_print(stat.result)
|
|
205
|
+
|
|
206
|
+
# res = rpc_call('queue_test_g02t',{'x':1,'y':2},True,60)
|
|
207
|
+
|
|
208
|
+
res = get_result_by_task_id('3232',60)
|
|
209
|
+
print(res)
|
|
210
|
+
|
|
211
|
+
|