funboost 43.0__tar.gz → 43.2__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-43.0/funboost.egg-info → funboost-43.2}/PKG-INFO +1 -1
- {funboost-43.0 → funboost-43.2}/funboost/__init__.py +1 -1
- {funboost-43.0 → funboost-43.2}/funboost/constant.py +1 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/base_consumer.py +11 -4
- {funboost-43.0 → funboost-43.2}/funboost/core/booster.py +3 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/cli/discovery_boosters.py +5 -3
- {funboost-43.0 → funboost-43.2}/funboost/core/current_task.py +7 -6
- {funboost-43.0 → funboost-43.2}/funboost/core/func_params_model.py +2 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/lazy_impoter.py +3 -2
- {funboost-43.0 → funboost-43.2}/funboost/core/muliti_process_enhance.py +3 -3
- funboost-43.2/funboost/core/task_id_logger.py +19 -0
- {funboost-43.0 → funboost-43.2}/funboost/funboost_config_deafult.py +2 -2
- {funboost-43.0 → funboost-43.2}/funboost/publishers/base_publisher.py +10 -10
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +3 -3
- {funboost-43.0 → funboost-43.2/funboost.egg-info}/PKG-INFO +1 -1
- funboost-43.0/funboost/core/task_id_logger.py +0 -13
- {funboost-43.0 → funboost-43.2}/LICENSE +0 -0
- {funboost-43.0 → funboost-43.2}/MANIFEST.in +0 -0
- {funboost-43.0 → funboost-43.2}/README.md +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/__init__old.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/__main__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/assist/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/assist/celery_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/assist/dramatiq_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/assist/huey_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/assist/rocketry_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/assist/rq_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/assist/rq_windows_worker.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/async_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/async_pool_executor.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/backup/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/base_pool_type.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/pool_commons.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/single_thread_executor.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/celery_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/confirm_mixin.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/dramatiq_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/http_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/http_consumer000.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/httpsqs_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/huey_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/kafka_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/kombu_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/local_python_queue_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/memory_deque_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/mongomq_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/mqtt_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/nameko_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/nats_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/nsq_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/peewee_conusmer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/persist_queue_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/pulsar_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_consumer_ack_able.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_consumer_priority.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_consumer_simple.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_filter.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_pubsub_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/redis_stream_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/rocketmq_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/rq_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/sqlachemy_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/tcp_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/txt_file_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/udp_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/consumers/zeromq_consumer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/contrib/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/contrib/api_publish_msg.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/contrib/django_db_deco.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/contrib/queue2queue.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/active_cousumer_info_getter.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/cli/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/cli/funboost_fire.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/exceptions.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/fabric_deploy_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/function_result_status_config.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/function_result_status_saver.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/helper_funs.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/kill_remote_task.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/loggers.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/msg_result_getter.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/core/try_get_user_funboost_common_config.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/factories/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/factories/consumer_factory.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/factories/publisher_factotry.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/app.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/functions.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/assets/css/custom.css +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/assets/js/custom.js +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/css/style.css +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/images/bg.jpg +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/images/password.png +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/images/tick.png +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/images/user.png +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/templates/index.html +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/function_result_web/templates/login.html +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/celery_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/celery_publisher000.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/confluent_kafka_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/dramatiq_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/http_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/httpsqs_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/huey_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/kafka_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/kombu_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/local_python_queue_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/meomory_deque_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/mongomq_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/mqtt_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/nameko_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/nats_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/nsq_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/peewee_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/persist_queue_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/pulsar_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/redis_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/redis_publisher_lpush.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/redis_publisher_priority.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/redis_publisher_simple.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/redis_pubsub_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/redis_stream_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/rocketmq_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/rq_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/sqla_queue_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/tcp_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/txt_file_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/udp_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/publishers/zeromq_publisher.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/queues/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/queues/peewee_queue.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/queues/sqla_queue.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/set_frame_config.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/timing_job/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/apscheduler_monkey.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/block_exit.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/bulk_operation.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/ctrl_c_end.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/custom_pysnooper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/decorators.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/develop_log.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/expire_lock.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/json_helper.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/mongo_util.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/monkey_color_log.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/monkey_patches.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/mqtt_util.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/paramiko_util.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/pysnooper_ydf/utils.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/pysnooper_ydf/variables.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/rabbitmq_factory.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/redis_manager.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/redis_manager_old.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/resource_monitoring.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/restart_python.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/simple_data_class.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/time_util.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/times/__init__.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/times/version.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost/utils/un_strict_json_dumps.py +0 -0
- {funboost-43.0 → funboost-43.2}/funboost.egg-info/SOURCES.txt +0 -0
- {funboost-43.0 → funboost-43.2}/funboost.egg-info/dependency_links.txt +0 -0
- {funboost-43.0 → funboost-43.2}/funboost.egg-info/entry_points.txt +0 -0
- {funboost-43.0 → funboost-43.2}/funboost.egg-info/requires.txt +0 -0
- {funboost-43.0 → funboost-43.2}/funboost.egg-info/top_level.txt +0 -0
- {funboost-43.0 → funboost-43.2}/setup.cfg +0 -0
- {funboost-43.0 → funboost-43.2}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 43.
|
|
3
|
+
Version: 43.2
|
|
4
4
|
Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
|
|
5
5
|
Home-page: https://github.com/ydf0509/funboost
|
|
6
6
|
Author: bfzs
|
|
@@ -69,8 +69,9 @@ from funboost.utils import decorators, time_util, redis_manager
|
|
|
69
69
|
from funboost.constant import ConcurrentModeEnum, BrokerEnum
|
|
70
70
|
from funboost.core import kill_remote_task
|
|
71
71
|
from funboost.core.exceptions import ExceptionForRequeue, ExceptionForPushToDlxqueue
|
|
72
|
+
|
|
72
73
|
# from funboost.core.booster import BoostersManager 互相导入
|
|
73
|
-
from funboost.core.lazy_impoter import
|
|
74
|
+
from funboost.core.lazy_impoter import lazy_impoter
|
|
74
75
|
|
|
75
76
|
|
|
76
77
|
# patch_apscheduler_run_job()
|
|
@@ -219,6 +220,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
219
220
|
logger_prefix=consumer_params.logger_prefix,
|
|
220
221
|
create_logger_file=consumer_params.create_logger_file,
|
|
221
222
|
log_filename=consumer_params.log_filename,
|
|
223
|
+
logger_name=consumer_params.logger_name,
|
|
222
224
|
broker_exclusive_config=self.consumer_params.broker_exclusive_config)
|
|
223
225
|
if is_main_process:
|
|
224
226
|
self.logger.info(f'{self.queue_name} consumer 的消费者配置:\n {self.consumer_params.json_str_value()}')
|
|
@@ -229,7 +231,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
229
231
|
if logger_prefix != '':
|
|
230
232
|
logger_prefix += '--'
|
|
231
233
|
# logger_name = f'{logger_prefix}{self.__class__.__name__}--{concurrent_name}--{queue_name}--{self.consuming_function.__name__}'
|
|
232
|
-
logger_name = f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
234
|
+
logger_name = self.consumer_params.logger_name or f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
233
235
|
self.logger_name = logger_name
|
|
234
236
|
log_filename = self.consumer_params.log_filename or f'funboost.{self.queue_name}.log'
|
|
235
237
|
self.logger = LogManager(logger_name, logger_cls=TaskIdLogger).get_logger_and_add_handlers(
|
|
@@ -317,7 +319,12 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
317
319
|
def start_consuming_message(self):
|
|
318
320
|
# ConsumersManager.show_all_consumer_info()
|
|
319
321
|
# noinspection PyBroadException
|
|
320
|
-
|
|
322
|
+
pid_queue_name_tuple = (os.getpid(), self.queue_name)
|
|
323
|
+
if pid_queue_name_tuple in lazy_impoter.BoostersManager.pid_queue_name__has_start_consume_set:
|
|
324
|
+
self.logger.warning(f'{pid_queue_name_tuple} 已启动消费,不要一直去启动消费,funboost框架自动阻止.') # 有的人乱写代码,无数次在函数内部或for循环里面执行 f.consume(),一个队列只需要启动一次消费,不然每启动一次性能消耗很大,直到程序崩溃
|
|
325
|
+
return
|
|
326
|
+
else:
|
|
327
|
+
lazy_impoter.BoostersManager.pid_queue_name__has_start_consume_set.add(pid_queue_name_tuple)
|
|
321
328
|
GlobalVars.has_start_a_consumer_flag = True
|
|
322
329
|
try:
|
|
323
330
|
self._concurrent_mode_dispatcher.check_all_concurrent_mode()
|
|
@@ -364,7 +371,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
364
371
|
key = 'apscheduler.redisjobstore_runonce'
|
|
365
372
|
if RedisMixin().redis_db_frame.sadd(key, runonce_uuid): # 这样可以阻止多次启动同队列名消费者 redis jobstore多次运行函数.
|
|
366
373
|
cls.logger_apscheduler.debug(f'延时任务用普通消息重新发布到普通队列 {msg}')
|
|
367
|
-
|
|
374
|
+
lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name).publish(msg)
|
|
368
375
|
|
|
369
376
|
@abc.abstractmethod
|
|
370
377
|
def _shedual_task(self):
|
|
@@ -13,6 +13,7 @@ from funboost.core.exceptions import BoostDecoParamsIsOldVersion
|
|
|
13
13
|
from funboost.core.func_params_model import BoosterParams, FunctionResultStatusPersistanceConfig, PriorityConsumingControlConfig
|
|
14
14
|
|
|
15
15
|
from funboost.factories.consumer_factory import get_consumer
|
|
16
|
+
from collections import defaultdict
|
|
16
17
|
|
|
17
18
|
if typing.TYPE_CHECKING:
|
|
18
19
|
from funboost.core.msg_result_getter import AsyncResult
|
|
@@ -180,6 +181,8 @@ class BoostersManager:
|
|
|
180
181
|
# queue_name__boost_params_consuming_function_map 字典存放 {queue_name,(@boost的入参字典,@boost装饰的消费函数)}
|
|
181
182
|
queue_name__boost_params_map = {} # type: typing.Dict[str,BoosterParams]
|
|
182
183
|
|
|
184
|
+
pid_queue_name__has_start_consume_set = set()
|
|
185
|
+
|
|
183
186
|
@classmethod
|
|
184
187
|
def regist_booster(cls, queue_name: str, booster: Booster):
|
|
185
188
|
"""这个是框架在@boost时候自动调用的,无需用户亲自调用"""
|
|
@@ -7,7 +7,7 @@ import importlib.util
|
|
|
7
7
|
# import nb_log
|
|
8
8
|
from funboost.core.loggers import FunboostFileLoggerMixin
|
|
9
9
|
from funboost.utils.decorators import flyweight
|
|
10
|
-
from funboost.core.lazy_impoter import
|
|
10
|
+
from funboost.core.lazy_impoter import lazy_impoter
|
|
11
11
|
|
|
12
12
|
@flyweight
|
|
13
13
|
class BoosterDiscovery(FunboostFileLoggerMixin):
|
|
@@ -63,10 +63,12 @@ class BoosterDiscovery(FunboostFileLoggerMixin):
|
|
|
63
63
|
if Path(file_path) == Path(sys._getframe(1).f_code.co_filename):
|
|
64
64
|
self.logger.warning(f'排除导入调用auto_discovery的模块自身 {file_path}') # 否则下面的import这个文件,会造成无限懵逼死循环
|
|
65
65
|
continue
|
|
66
|
-
|
|
66
|
+
|
|
67
|
+
module_name = Path(file_path).as_posix().replace('/', '.') + '.' + Path(file_path).stem
|
|
68
|
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
|
67
69
|
module = importlib.util.module_from_spec(spec)
|
|
68
70
|
spec.loader.exec_module(module)
|
|
69
|
-
|
|
71
|
+
lazy_impoter.BoostersManager.show_all_boosters()
|
|
70
72
|
|
|
71
73
|
|
|
72
74
|
if __name__ == '__main__':
|
|
@@ -47,7 +47,7 @@ if __name__ == '__main__':
|
|
|
47
47
|
"""
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
class
|
|
50
|
+
class __ThreadCurrentTask:
|
|
51
51
|
"""
|
|
52
52
|
用于在用户自己函数内部去获取 消息的完整体,当前重试次数等.
|
|
53
53
|
"""
|
|
@@ -92,7 +92,7 @@ class ThreadCurrentTask:
|
|
|
92
92
|
def logger(self, logger: logging.Logger):
|
|
93
93
|
self._fct_local_data.logger = logger
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
thread_current_task = __ThreadCurrentTask()
|
|
96
96
|
def is_asyncio_environment():
|
|
97
97
|
try:
|
|
98
98
|
loop = asyncio.get_running_loop()
|
|
@@ -101,7 +101,7 @@ def is_asyncio_environment():
|
|
|
101
101
|
return False
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
class
|
|
104
|
+
class __AsyncioCurrentTask:
|
|
105
105
|
_function_params = contextvars.ContextVar("function_params")
|
|
106
106
|
_full_msg = contextvars.ContextVar("full_msg")
|
|
107
107
|
_function_result_status = contextvars.ContextVar("function_result_status")
|
|
@@ -143,9 +143,10 @@ class AsyncioCurrentTask:
|
|
|
143
143
|
def logger(self, logger: logging.Logger):
|
|
144
144
|
self._logger.set(logger)
|
|
145
145
|
|
|
146
|
+
asyncio_current_task = __AsyncioCurrentTask()
|
|
146
147
|
|
|
147
148
|
def funboost_current_task():
|
|
148
|
-
return
|
|
149
|
+
return asyncio_current_task if is_asyncio_environment() else thread_current_task
|
|
149
150
|
|
|
150
151
|
|
|
151
152
|
def get_current_taskid():
|
|
@@ -153,7 +154,7 @@ def get_current_taskid():
|
|
|
153
154
|
# return fct.function_result_status.task_id
|
|
154
155
|
try:
|
|
155
156
|
return fct.task_id # 不在funboost的消费函数里面就获取不到上下文了
|
|
156
|
-
except AttributeError as e:
|
|
157
|
+
except (AttributeError,LookupError) as e:
|
|
157
158
|
# print(e,type(e))
|
|
158
159
|
return 'no_task_id'
|
|
159
160
|
|
|
@@ -162,5 +163,5 @@ if __name__ == '__main__':
|
|
|
162
163
|
print()
|
|
163
164
|
for i in range(100000):
|
|
164
165
|
funboost_current_task()
|
|
165
|
-
|
|
166
|
+
get_current_taskid()
|
|
166
167
|
print()
|
|
@@ -143,6 +143,7 @@ class BoosterParams(BaseJsonAbleModel):
|
|
|
143
143
|
log_level: int = logging.DEBUG # 消费者和发布者的日志级别,建议设置DEBUG级别,不然无法知道正在运行什么消息
|
|
144
144
|
logger_prefix: str = '' # 日志名字前缀,可以设置前缀
|
|
145
145
|
create_logger_file: bool = True # 发布者和消费者是否创建文件文件日志,为False则只打印控制台不写文件.
|
|
146
|
+
logger_name: str = '' # 队列消费者发布者的日志命名空间.
|
|
146
147
|
log_filename: typing.Union[str, None] = None # 消费者发布者的文件日志名字.如果为None,则自动使用 funboost.队列 名字作为文件日志名字. 日志文件夹是在nb_log_config.py的 LOG_PATH中决定的.
|
|
147
148
|
is_show_message_get_from_broker: bool = False # 运行时候,是否记录从消息队列获取出来的消息内容
|
|
148
149
|
is_print_detail_exception: bool = True # 消费函数出错时候,是否打印详细的报错堆栈,为False则只打印简略的报错信息不包含堆栈.
|
|
@@ -248,6 +249,7 @@ class PublisherParams(BaseJsonAbleModel):
|
|
|
248
249
|
log_level: int = logging.DEBUG
|
|
249
250
|
logger_prefix: str = ''
|
|
250
251
|
create_logger_file: bool = True
|
|
252
|
+
logger_name: str = '' # 队列消费者发布者的日志命名空间.
|
|
251
253
|
log_filename: typing.Optional[str] = None
|
|
252
254
|
clear_queue_within_init: bool = False # with 语法发布时候,先清空消息队列
|
|
253
255
|
consuming_function: typing.Callable = None # consuming_function 作用是 inspect 模块获取函数的入参信息
|
|
@@ -18,8 +18,9 @@ class LazyImpoter:
|
|
|
18
18
|
# from funboost.core.current_task import get_current_taskid
|
|
19
19
|
# return get_current_taskid
|
|
20
20
|
|
|
21
|
+
lazy_impoter = LazyImpoter()
|
|
21
22
|
|
|
22
23
|
if __name__ == '__main__':
|
|
23
24
|
for i in range(10000):
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
lazy_impoter.BoostersManager
|
|
26
|
+
lazy_impoter.BoostersManager
|
|
@@ -7,11 +7,11 @@ from concurrent.futures import ProcessPoolExecutor
|
|
|
7
7
|
from funboost.core.booster import Booster
|
|
8
8
|
from funboost.core.helper_funs import run_forever
|
|
9
9
|
from funboost.core.loggers import flogger
|
|
10
|
-
from funboost.core.lazy_impoter import
|
|
10
|
+
from funboost.core.lazy_impoter import lazy_impoter
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _run_consumer_in_new_process(queue_name, ):
|
|
14
|
-
booster_current_pid =
|
|
14
|
+
booster_current_pid = lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name)
|
|
15
15
|
# booster_current_pid = boost(**boost_params)(consuming_function)
|
|
16
16
|
booster_current_pid.consume()
|
|
17
17
|
# ConsumersManager.join_all_consumer_shedual_task_thread()
|
|
@@ -49,7 +49,7 @@ def run_consumer_with_multi_process(booster: Booster, process_num=1):
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
def _multi_process_pub_params_list_in_new_process(queue_name, msgs: List[dict]):
|
|
52
|
-
booster_current_pid =
|
|
52
|
+
booster_current_pid = lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name)
|
|
53
53
|
publisher = booster_current_pid.publisher
|
|
54
54
|
publisher.set_log_level(20) # 超高速发布,如果打印详细debug日志会卡死屏幕和严重降低代码速度。
|
|
55
55
|
for msg in msgs:
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import functools
|
|
2
|
+
|
|
3
|
+
from nb_log import CompatibleLogger
|
|
4
|
+
from funboost.core.current_task import get_current_taskid
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TaskIdLogger(CompatibleLogger):
|
|
8
|
+
"""
|
|
9
|
+
如果你要使用带taskid的日志模板,一定要使用
|
|
10
|
+
LogManager('namexx',logger_cls=TaskIdLogger).get_logger_and_add_handlers(....)
|
|
11
|
+
的方式来创建logger, 就是需要指定logger_cls=TaskIdLogger ,否则的话你需要在打印日志时候 手动传递extra logger.info(msg,extra={'task_id':task_idxxx})
|
|
12
|
+
"""
|
|
13
|
+
def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False):
|
|
14
|
+
extra = extra or {}
|
|
15
|
+
if 'task_id' not in extra:
|
|
16
|
+
extra['task_id'] = get_current_taskid()
|
|
17
|
+
if 'sys_getframe_n' not in extra:
|
|
18
|
+
extra['sys_getframe_n'] = 3
|
|
19
|
+
super()._log(level, msg, args, exc_info, extra, stack_info)
|
|
@@ -97,10 +97,10 @@ class BrokerConnConfig(DataClassBase):
|
|
|
97
97
|
|
|
98
98
|
class FunboostCommonConfig(DataClassBase):
|
|
99
99
|
# nb_log包的第几个日志模板,内置了7个模板,可以在你当前项目根目录下的nb_log_config.py文件扩展模板。
|
|
100
|
-
# NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER = 11 # 7是简短的不可跳转,5是可点击跳转的,11是可显示ip 进程
|
|
100
|
+
# NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER = 11 # 7是简短的不可跳转,5是可点击跳转的,11是可显示ip 进程 线程的模板,也可以亲自设置日志模板不传递数字。
|
|
101
101
|
NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER = logging.Formatter(
|
|
102
102
|
f'%(asctime)s-({nb_log_config_default.computer_ip},{nb_log_config_default.computer_name})-[p%(process)d_t%(thread)d] - %(name)s - "%(filename)s:%(lineno)d" - %(funcName)s - %(levelname)s - %(task_id)s - %(message)s',
|
|
103
|
-
"%Y-%m-%d %H:%M:%S",) # 这个是带task_id
|
|
103
|
+
"%Y-%m-%d %H:%M:%S",) # 这个是带task_id的日志模板,日志可以显示task_id,方便用户串联起来排查某一个人物消息的所有日志.
|
|
104
104
|
|
|
105
105
|
TIMEZONE = 'Asia/Shanghai' # 时区
|
|
106
106
|
|
|
@@ -159,13 +159,13 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
159
159
|
logger_prefix = self.publisher_params.logger_prefix
|
|
160
160
|
if logger_prefix != '':
|
|
161
161
|
logger_prefix += '--'
|
|
162
|
-
logger_name = f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
163
|
-
log_filename = self.publisher_params.log_filename or f'funboost.{self.queue_name}.log'
|
|
164
|
-
self.logger = nb_log.LogManager(logger_name,logger_cls=TaskIdLogger).get_logger_and_add_handlers(
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
162
|
+
self.logger_name = self.publisher_params.logger_name or f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
|
|
163
|
+
self.log_filename = self.publisher_params.log_filename or f'funboost.{self.queue_name}.log'
|
|
164
|
+
self.logger = nb_log.LogManager(self.logger_name, logger_cls=TaskIdLogger).get_logger_and_add_handlers(
|
|
165
|
+
log_level_int=self.publisher_params.log_level,
|
|
166
|
+
log_filename=self.log_filename if self.publisher_params.create_logger_file else None,
|
|
167
|
+
error_log_filename=nb_log.generate_error_file_name(self.log_filename),
|
|
168
|
+
formatter_template=FunboostCommonConfig.NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER, )
|
|
169
169
|
|
|
170
170
|
def _init_count(self):
|
|
171
171
|
self._current_time = time.time()
|
|
@@ -214,7 +214,7 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
214
214
|
decorators.handle_exception(retry_times=10, is_throw_error=True, time_sleep=0.1)(
|
|
215
215
|
self.concrete_realization_of_publish)(json.dumps(msg, ensure_ascii=False))
|
|
216
216
|
|
|
217
|
-
self.logger.debug(f'向{self._queue_name} 队列,推送消息 耗时{round(time.time() - t_start, 4)}秒 {msg_function_kw}',extra={'task_id':task_id}) # 显示msg太长了。
|
|
217
|
+
self.logger.debug(f'向{self._queue_name} 队列,推送消息 耗时{round(time.time() - t_start, 4)}秒 {msg_function_kw}', extra={'task_id': task_id}) # 显示msg太长了。
|
|
218
218
|
with self._lock_for_count:
|
|
219
219
|
self.count_per_minute += 1
|
|
220
220
|
self.publish_msg_num_total += 1
|
|
@@ -224,9 +224,9 @@ class AbstractPublisher(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
224
224
|
self._init_count()
|
|
225
225
|
return AsyncResult(task_id)
|
|
226
226
|
|
|
227
|
-
def send_msg(self,msg:typing.Union[dict,str]):
|
|
227
|
+
def send_msg(self, msg: typing.Union[dict, str]):
|
|
228
228
|
"""直接发送任意消息内容到消息队列,不生成辅助参数,无视函数入参名字,不校验入参个数和键名"""
|
|
229
|
-
if isinstance(msg,dict):
|
|
229
|
+
if isinstance(msg, dict):
|
|
230
230
|
msg = json.dumps(msg, ensure_ascii=False)
|
|
231
231
|
decorators.handle_exception(retry_times=10, is_throw_error=True, time_sleep=0.1)(
|
|
232
232
|
self.concrete_realization_of_publish)(msg)
|
|
Binary file
|
|
@@ -64,10 +64,10 @@ def func_timeout(timeout, func, args=(), kwargs=None):
|
|
|
64
64
|
exception = []
|
|
65
65
|
isStopped = False
|
|
66
66
|
|
|
67
|
-
from funboost.core.current_task import
|
|
67
|
+
from funboost.core.current_task import thread_current_task
|
|
68
68
|
|
|
69
69
|
def funcwrap(args2, kwargs2,_fct_local_data_dict):
|
|
70
|
-
fct =
|
|
70
|
+
fct = thread_current_task
|
|
71
71
|
fct._fct_local_data.__dict__.update(_fct_local_data_dict) # 把funboost的消费线程上下文需要传递到超时线程上下文里面来.
|
|
72
72
|
try:
|
|
73
73
|
ret.append( func(*args2, **kwargs2) )
|
|
@@ -86,7 +86,7 @@ def func_timeout(timeout, func, args=(), kwargs=None):
|
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
# fct = funboost_current_task()
|
|
89
|
-
thread = StoppableThread(target=funcwrap, args=(args, kwargs,
|
|
89
|
+
thread = StoppableThread(target=funcwrap, args=(args, kwargs,thread_current_task._fct_local_data.__dict__))
|
|
90
90
|
thread.daemon = True
|
|
91
91
|
|
|
92
92
|
thread.start()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 43.
|
|
3
|
+
Version: 43.2
|
|
4
4
|
Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
|
|
5
5
|
Home-page: https://github.com/ydf0509/funboost
|
|
6
6
|
Author: bfzs
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
|
|
3
|
-
from nb_log import CompatibleLogger
|
|
4
|
-
from funboost.core.current_task import get_current_taskid
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class TaskIdLogger(CompatibleLogger):
|
|
8
|
-
def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False):
|
|
9
|
-
extra = extra or {}
|
|
10
|
-
if 'task_id' not in extra:
|
|
11
|
-
extra['task_id'] = get_current_taskid()
|
|
12
|
-
extra['sys_getframe_n'] = 3
|
|
13
|
-
super()._log(level, msg, args, exc_info, extra, stack_info)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funboost-43.0 → funboost-43.2}/funboost/beggar_version_implementation/beggar_redis_consumer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/backup/async_pool_executor_janus.py
RENAMED
|
File without changes
|
|
File without changes
|
{funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funboost-43.0 → funboost-43.2}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funboost-43.0 → funboost-43.2}/funboost/factories/broker_kind__publsiher_consumer_type_map.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|