funboost 48.7__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.7/funboost.egg-info → funboost-48.8}/PKG-INFO +7 -3
- {funboost-48.7 → funboost-48.8}/README.md +12 -2
- {funboost-48.7 → funboost-48.8}/funboost/__init__.py +1 -1
- {funboost-48.7 → funboost-48.8}/funboost/__main__.py +2 -0
- {funboost-48.7 → funboost-48.8}/funboost/constant.py +2 -1
- {funboost-48.7 → funboost-48.8}/funboost/consumers/base_consumer.py +4 -3
- {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +1 -1
- {funboost-48.7 → funboost-48.8}/funboost/core/active_cousumer_info_getter.py +3 -3
- {funboost-48.7 → funboost-48.8}/funboost/core/booster.py +1 -1
- {funboost-48.7 → funboost-48.8}/funboost/core/cli/funboost_fire.py +10 -0
- {funboost-48.7 → 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.7 → 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.7 → funboost-48.8}/funboost/function_result_web/functions.py +57 -3
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js_cdn/tabulator-tables@5.5.0/dist/js/tabulator.min.js +1 -1
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/about.html +0 -9
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/conusme_speed.html +2 -2
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/fun_result_table.html +1 -1
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/index.html +34 -9
- {funboost-48.7 → 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.7 → funboost-48.8}/funboost/function_result_web/templates/running_consumer_by_ip.html +2 -2
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/running_consumer_by_queue_name.html +2 -2
- funboost-48.8/funboost/utils/ctrl_c_end.py +37 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +6 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/readme.md +6 -0
- {funboost-48.7 → funboost-48.8/funboost.egg-info}/PKG-INFO +7 -3
- {funboost-48.7 → funboost-48.8}/funboost.egg-info/SOURCES.txt +2 -0
- funboost-48.7/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
- funboost-48.7/funboost/function_result_web/__pycache__/app.cpython-39.pyc +0 -0
- funboost-48.7/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- funboost-48.7/funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
- funboost-48.7/funboost/utils/ctrl_c_end.py +0 -19
- {funboost-48.7 → funboost-48.8}/LICENSE +0 -0
- {funboost-48.7 → funboost-48.8}/MANIFEST.in +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/__init__old.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/celery_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/dramatiq_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/faststream_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/huey_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/rocketry_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/rq_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/rq_windows_worker.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/assist/taskiq_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/async_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/async_pool_executor.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/grok_async_pool.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/base_pool_type.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/pool_commons.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/single_thread_executor.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/celery_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/confirm_mixin.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/dramatiq_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/empty_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/faststream_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/http_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/http_consumer000.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/httpsqs_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/huey_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/kafka_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/kombu_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/local_python_queue_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/memory_deque_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/mongomq_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/mqtt_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/nameko_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/nats_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/nsq_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/peewee_conusmer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/persist_queue_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/pulsar_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_ack_able.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_ack_using_timeout.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_priority.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_simple.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_filter.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_pubsub_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_stream_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/rocketmq_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/rq_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/sqlachemy_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/tcp_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/txt_file_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/udp_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/consumers/zeromq_consumer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/contrib/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/contrib/api_publish_msg.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/contrib/django_db_deco.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/contrib/queue2queue.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/cli/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/cli/discovery_boosters.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/current_task.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/exceptions.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/fabric_deploy_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/funboost_config_getter.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/funboost_time.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/func_params_model.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/function_result_status_config.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/function_result_status_saver.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/helper_funs.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/kill_remote_task.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/lazy_impoter.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/loggers.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/muliti_process_enhance.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/serialization.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/core/task_id_logger.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/factories/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/factories/consumer_factory.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/factories/publisher_factotry.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/funboost_config_deafult.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/css/custom.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/js/custom.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css/content_page_style.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css/style.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/css/font-awesome.min.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/FontAwesome.otf +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.eot +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.svg +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/select2/4.0.13/css/select2.min.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator.min.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator_bootstrap3.min.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/css/bootstrap.min.css +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.eot +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.svg +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.ttf +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/bg.jpg +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/favicon.ico +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/password.png +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/tick.png +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/user.png +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/bootstrap-datetimepicker.min.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/echarts.min.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/moment-with-locales.min.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/select2.min.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js_cdn/bootstrap/3.3.7/js/bootstrap.min.js +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/index_backup.html +0 -0
- {funboost-48.7 → 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.7 → funboost-48.8}/funboost/function_result_web/templates/login.html +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/base_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/celery_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/celery_publisher000.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/confluent_kafka_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/dramatiq_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/empty_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/faststream_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/http_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/httpsqs_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/huey_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/kafka_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/kombu_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/local_python_queue_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/meomory_deque_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/mongomq_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/mqtt_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/nameko_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/nats_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/nsq_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/peewee_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/persist_queue_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/pulsar_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher_lpush.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher_priority.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher_simple.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_pubsub_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_stream_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/rocketmq_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/rq_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/sqla_queue_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/tcp_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/txt_file_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/udp_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/publishers/zeromq_publisher.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/queues/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/queues/memory_queues_map.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/queues/peewee_queue.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/queues/sqla_queue.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/set_frame_config.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/timing_job/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/timing_job/timing_job_base.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/timing_job/timing_push.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/apscheduler_monkey.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/block_exit.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/bulk_operation.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/class_utils.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/class_utils2.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/custom_pysnooper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/decorators.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-313.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-313.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc2222.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/develop_log.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/expire_lock.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/StoppableThread.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/dafunc.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/exceptions.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/py2_raise.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/py3_raise.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/json_helper.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/mongo_util.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/monkey_color_log.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/monkey_patches.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/mqtt_util.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/paramiko_util.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/utils.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/variables.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/rabbitmq_factory.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/redis_manager.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/redis_manager_old.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/resource_monitoring.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/restart_python.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/simple_data_class.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/str_utils.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/time_util.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/times/__init__.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/times/version.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost/utils/un_strict_json_dumps.py +0 -0
- {funboost-48.7 → funboost-48.8}/funboost.egg-info/dependency_links.txt +0 -0
- {funboost-48.7 → funboost-48.8}/funboost.egg-info/entry_points.txt +0 -0
- {funboost-48.7 → funboost-48.8}/funboost.egg-info/requires.txt +0 -0
- {funboost-48.7 → funboost-48.8}/funboost.egg-info/top_level.txt +0 -0
- {funboost-48.7 → funboost-48.8}/setup.cfg +0 -0
- {funboost-48.7 → 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
|
|
|
@@ -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
|
'''
|
|
@@ -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
|
+
|