funboost 42.0__tar.gz → 42.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-42.0/funboost.egg-info → funboost-42.2}/PKG-INFO +8 -4
- {funboost-42.0 → funboost-42.2}/README.md +7 -3
- {funboost-42.0 → funboost-42.2}/funboost/__init__.py +1 -1
- {funboost-42.0 → funboost-42.2}/funboost/assist/celery_helper.py +11 -0
- {funboost-42.0 → funboost-42.2}/funboost/constant.py +1 -1
- {funboost-42.0 → funboost-42.2}/funboost/consumers/base_consumer.py +2 -2
- funboost-42.2/funboost/contrib/django_db_deco.py +24 -0
- funboost-42.2/funboost/contrib/save_result_status_to_sqldb.py +114 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/cli/funboost_fire.py +18 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/exceptions.py +10 -4
- {funboost-42.0 → funboost-42.2}/funboost/core/loggers.py +1 -1
- {funboost-42.0 → funboost-42.2/funboost.egg-info}/PKG-INFO +8 -4
- {funboost-42.0 → funboost-42.2}/funboost.egg-info/SOURCES.txt +2 -0
- {funboost-42.0 → funboost-42.2}/funboost.egg-info/requires.txt +2 -2
- {funboost-42.0 → funboost-42.2}/setup.py +1 -1
- {funboost-42.0 → funboost-42.2}/LICENSE +0 -0
- {funboost-42.0 → funboost-42.2}/MANIFEST.in +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/__init__old.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/__main__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/assist/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/assist/dramatiq_helper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/assist/huey_helper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/assist/rocketry_helper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/assist/rq_helper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/assist/rq_windows_worker.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/async_helper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/async_pool_executor.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/backup/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/base_pool_type.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/pool_commons.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/single_thread_executor.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/celery_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/confirm_mixin.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/dramatiq_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/http_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/http_consumer000.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/httpsqs_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/huey_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/kafka_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/kombu_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/local_python_queue_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/memory_deque_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/mongomq_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/mqtt_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/nameko_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/nats_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/nsq_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/peewee_conusmer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/persist_queue_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/pulsar_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_consumer_ack_able.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_consumer_priority.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_consumer_simple.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_filter.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_pubsub_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/redis_stream_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/rocketmq_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/rq_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/sqlachemy_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/tcp_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/txt_file_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/udp_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/consumers/zeromq_consumer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/contrib/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/contrib/api_publish_msg.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/contrib/queue2queue.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/active_cousumer_info_getter.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/booster.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/cli/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/cli/discovery_boosters.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/fabric_deploy_helper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/func_params_model.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/function_result_status_config.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/function_result_status_saver.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/helper_funs.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/kill_remote_task.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/msg_result_getter.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/muliti_process_enhance.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/core/try_get_user_funboost_common_config.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/factories/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/factories/consumer_factory.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/factories/publisher_factotry.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/funboost_config_deafult.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/app.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/functions.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/assets/css/custom.css +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/assets/js/custom.js +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/css/style.css +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/images/bg.jpg +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/images/password.png +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/images/tick.png +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/images/user.png +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/templates/index.html +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/function_result_web/templates/login.html +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/base_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/celery_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/celery_publisher000.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/confluent_kafka_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/dramatiq_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/http_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/httpsqs_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/huey_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/kafka_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/kombu_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/local_python_queue_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/meomory_deque_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/mongomq_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/mqtt_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/nameko_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/nats_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/nsq_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/peewee_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/persist_queue_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/pulsar_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/redis_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/redis_publisher_lpush.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/redis_publisher_priority.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/redis_publisher_simple.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/redis_pubsub_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/redis_stream_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/rocketmq_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/rq_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/sqla_queue_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/tcp_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/txt_file_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/udp_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/publishers/zeromq_publisher.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/queues/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/queues/peewee_queue.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/queues/sqla_queue.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/set_frame_config.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/timing_job/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/apscheduler_monkey.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/block_exit.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/bulk_operation.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/ctrl_c_end.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/custom_pysnooper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/decorators.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/develop_log.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/expire_lock.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/json_helper.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/mongo_util.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/monkey_color_log.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/monkey_patches.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/mqtt_util.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/paramiko_util.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/pysnooper_ydf/utils.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/pysnooper_ydf/variables.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/rabbitmq_factory.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/redis_manager.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/redis_manager_old.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/resource_monitoring.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/restart_python.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/simple_data_class.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/time_util.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/times/__init__.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/times/version.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost/utils/un_strict_json_dumps.py +0 -0
- {funboost-42.0 → funboost-42.2}/funboost.egg-info/dependency_links.txt +0 -0
- {funboost-42.0 → funboost-42.2}/funboost.egg-info/entry_points.txt +0 -0
- {funboost-42.0 → funboost-42.2}/funboost.egg-info/top_level.txt +0 -0
- {funboost-42.0 → funboost-42.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 42.
|
|
3
|
+
Version: 42.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
|
|
@@ -147,11 +147,15 @@ pip install funboost --upgrade
|
|
|
147
147
|
[//]: # ()
|
|
148
148
|
[//]: # ([img-46.png](https://postimg.cc/hfW0VhCX))
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
funboost示图:
|
|
151
|
+

|
|
152
|
+
|
|
151
153
|
|
|
152
154
|
[//]: # ([](https://postimg.cc/hfW0VhCX))
|
|
153
|
-
|
|
154
|
-
|
|
155
|
+
|
|
156
|
+
[//]: # (就是最普通的生产者消费者流程图)
|
|
157
|
+
|
|
158
|
+
[//]: # ()
|
|
155
159
|
|
|
156
160
|
也就是这种非常普通的流程图,一样的意思
|
|
157
161
|
|
|
@@ -116,11 +116,15 @@ pip install funboost --upgrade
|
|
|
116
116
|
[//]: # ()
|
|
117
117
|
[//]: # ([img-46.png](https://postimg.cc/hfW0VhCX))
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
funboost示图:
|
|
120
|
+

|
|
121
|
+
|
|
120
122
|
|
|
121
123
|
[//]: # ([](https://postimg.cc/hfW0VhCX))
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
|
|
125
|
+
[//]: # (就是最普通的生产者消费者流程图)
|
|
126
|
+
|
|
127
|
+
[//]: # ()
|
|
124
128
|
|
|
125
129
|
也就是这种非常普通的流程图,一样的意思
|
|
126
130
|
|
|
@@ -7,6 +7,7 @@ from functools import partial
|
|
|
7
7
|
|
|
8
8
|
import celery
|
|
9
9
|
|
|
10
|
+
import nb_log
|
|
10
11
|
from funboost.funboost_config_deafult import BrokerConnConfig,FunboostCommonConfig
|
|
11
12
|
from funboost import ConcurrentModeEnum
|
|
12
13
|
from funboost.core.loggers import get_funboost_file_logger,get_logger
|
|
@@ -109,4 +110,14 @@ class CeleryHelper:
|
|
|
109
110
|
使用nb_log的日志来取代celery的日志
|
|
110
111
|
"""
|
|
111
112
|
celery_app.conf.worker_hijack_root_logger = False
|
|
113
|
+
# logging.getLogger('celery').handlers=[]
|
|
114
|
+
# logging.getLogger('celery.worker.strategy').handlers = []
|
|
115
|
+
# logging.getLogger('celery.app.trace').handlers = []
|
|
116
|
+
# logging.getLogger('celery.worker').handlers = []
|
|
117
|
+
# logging.getLogger('celery.app').handlers = []
|
|
118
|
+
# logging.getLogger().handlers=[]
|
|
112
119
|
get_logger('celery', log_level_int=log_level, log_filename=log_filename, formatter_template=formatter_template, )
|
|
120
|
+
get_logger(None, log_level_int=logging.WARNING, log_filename=log_filename, formatter_template=formatter_template, )
|
|
121
|
+
for name in ['celery','celery.worker.strategy','celery.app.trace','celery.worker','celery.app',None]:
|
|
122
|
+
nb_log.LogManager(name).prevent_add_handlers()
|
|
123
|
+
nb_log.LogManager(None).preset_log_level(logging.WARNING)
|
|
@@ -14,7 +14,7 @@ class BrokerEnum:
|
|
|
14
14
|
|
|
15
15
|
MONGOMQ = 'MONGOMQ' # 使用mongo的表中的行模拟的 作为分布式消息队列,支持消费确认。
|
|
16
16
|
|
|
17
|
-
SQLITE_QUEUE = 'sqlite3' # 使用基于
|
|
17
|
+
SQLITE_QUEUE = 'sqlite3' # 使用基于sqlite3模拟消息队列,支持消费确认和持久化,但不支持跨机器共享任务,可以基于本机单机跨脚本和跨进程共享任务,好处是不需要安装中间件。
|
|
18
18
|
PERSISTQUEUE = SQLITE_QUEUE # PERSISTQUEUE的别名
|
|
19
19
|
|
|
20
20
|
NSQ = 'NSQ' # 基于nsq作为分布式消息队列,支持消费确认。
|
|
@@ -626,8 +626,8 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
626
626
|
if self.consumer_params.log_level <= logging.DEBUG:
|
|
627
627
|
result_str_to_be_print = str(function_result_status.result)[:100] if len(str(function_result_status.result)) < 100 else str(function_result_status.result)[:100] + ' 。。。。。 '
|
|
628
628
|
self.logger.debug(f' 函数 {self.consuming_function.__name__} '
|
|
629
|
-
f'第{current_retry_times + 1}次 运行, 正确了,函数运行时间是 {round(time.time() - t_start, 4)} 秒,入参是 {function_only_params}
|
|
630
|
-
f'
|
|
629
|
+
f'第{current_retry_times + 1}次 运行, 正确了,函数运行时间是 {round(time.time() - t_start, 4)} 秒,入参是 {function_only_params} , '
|
|
630
|
+
f'结果是 {result_str_to_be_print} {self._get_concurrent_info()} ')
|
|
631
631
|
except BaseException as e:
|
|
632
632
|
if isinstance(e, (ExceptionForRequeue,)): # mongo经常维护备份时候插入不了或挂了,或者自己主动抛出一个ExceptionForRequeue类型的错误会重新入队,不受指定重试次数逇约束。
|
|
633
633
|
log_msg = f'函数 [{self.consuming_function.__name__}] 中发生错误 {type(e)} {e} 。消息重新放入当前队列 {self._queue_name}'
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from django.db import close_old_connections
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def close_old_connections_deco(f):
|
|
5
|
+
"""
|
|
6
|
+
如果是消费函数里面需要操作django orm,那么请写上 consumin_function_decorator=close_old_connections_deco
|
|
7
|
+
@boost(BoosterParams(queue_name='create_student_queue',
|
|
8
|
+
broker_kind=BrokerEnum.REDIS_ACK_ABLE,
|
|
9
|
+
consumin_function_decorator=close_old_connections_deco, # 如果gone away 一直好不了,可以加这个装饰器. django_celery django-apschrduler 这些源码中 也是调用了 close_old_connections_deco方法.
|
|
10
|
+
|
|
11
|
+
)
|
|
12
|
+
)
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
def _inner(*args, **kwargs):
|
|
16
|
+
close_old_connections()
|
|
17
|
+
try:
|
|
18
|
+
result = f(*args, **kwargs)
|
|
19
|
+
finally:
|
|
20
|
+
close_old_connections()
|
|
21
|
+
|
|
22
|
+
return result
|
|
23
|
+
|
|
24
|
+
return _inner
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import copy
|
|
2
|
+
import functools
|
|
3
|
+
import json
|
|
4
|
+
|
|
5
|
+
from db_libs.sqla_lib import SqlaReflectHelper
|
|
6
|
+
from sqlalchemy import create_engine
|
|
7
|
+
|
|
8
|
+
from funboost import boost, FunctionResultStatus, funboost_config_deafult
|
|
9
|
+
|
|
10
|
+
"""
|
|
11
|
+
-- 如果用户是先保存到mysql中而非mongodb,用户自己先创建表,用于保存函数消费状态和结果.
|
|
12
|
+
|
|
13
|
+
CREATE TABLE funboost_consume_results
|
|
14
|
+
(
|
|
15
|
+
_id VARCHAR(255),
|
|
16
|
+
`function` VARCHAR(255),
|
|
17
|
+
host_name VARCHAR(255),
|
|
18
|
+
host_process VARCHAR(255),
|
|
19
|
+
insert_minutes VARCHAR(255),
|
|
20
|
+
insert_time datetime,
|
|
21
|
+
insert_time_str VARCHAR(255),
|
|
22
|
+
msg_dict JSON,
|
|
23
|
+
params JSON,
|
|
24
|
+
params_str VARCHAR(255),
|
|
25
|
+
process_id BIGINT(20),
|
|
26
|
+
publish_time FLOAT,
|
|
27
|
+
publish_time_str VARCHAR(255),
|
|
28
|
+
queue_name VARCHAR(255),
|
|
29
|
+
result VARCHAR(255),
|
|
30
|
+
run_times INT,
|
|
31
|
+
script_name VARCHAR(255),
|
|
32
|
+
script_name_long VARCHAR(255),
|
|
33
|
+
success BOOLEAN,
|
|
34
|
+
task_id VARCHAR(255),
|
|
35
|
+
thread_id BIGINT(20),
|
|
36
|
+
time_cost FLOAT,
|
|
37
|
+
time_end FLOAT,
|
|
38
|
+
time_start FLOAT,
|
|
39
|
+
total_thread INT,
|
|
40
|
+
utime VARCHAR(255),
|
|
41
|
+
`exception` MEDIUMTEXT ,
|
|
42
|
+
rpc_result_expire_seconds BIGINT(20),
|
|
43
|
+
primary key (_id),
|
|
44
|
+
key idx_insert_time(insert_time),
|
|
45
|
+
key idx_queue_name_insert_time(queue_name,insert_time),
|
|
46
|
+
key idx_params_str(params_str)
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _gen_insert_sql_and_values_by_dict(dictx: dict):
|
|
55
|
+
key_list = [f'`{k}`' for k in dictx.keys()]
|
|
56
|
+
fields = ", ".join(key_list)
|
|
57
|
+
|
|
58
|
+
# 构建占位符字符串
|
|
59
|
+
placeholders = ", ".join(['%s'] * len(dictx))
|
|
60
|
+
|
|
61
|
+
# 构建插入语句
|
|
62
|
+
insert_sql = f"INSERT INTO funboost_consume_results ({fields}) VALUES ({placeholders})"
|
|
63
|
+
|
|
64
|
+
# 获取数据字典的值作为插入的值
|
|
65
|
+
values = tuple(dictx.values())
|
|
66
|
+
values_new = tuple([json.dumps(v) if isinstance(v, dict) else v for v in values])
|
|
67
|
+
return insert_sql, values_new
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _gen_insert_sqlalchemy(dictx: dict):
|
|
71
|
+
key_list = [f'`{k}`' for k in dictx.keys()]
|
|
72
|
+
fields = ", ".join(key_list)
|
|
73
|
+
|
|
74
|
+
value_list = dictx.keys()
|
|
75
|
+
value_list_2 = [f':{f}' for f in value_list]
|
|
76
|
+
values = ", ".join(value_list_2)
|
|
77
|
+
|
|
78
|
+
# 构建插入语句
|
|
79
|
+
insert_sql = f"INSERT INTO funboost_consume_results ({fields}) VALUES ({values})"
|
|
80
|
+
|
|
81
|
+
return insert_sql
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
@functools.lru_cache()
|
|
85
|
+
def get_sqla_helper():
|
|
86
|
+
enginex = create_engine(
|
|
87
|
+
funboost_config_deafult.BrokerConnConfig.SQLACHEMY_ENGINE_URL,
|
|
88
|
+
max_overflow=10, # 超过连接池大小外最多创建的连接
|
|
89
|
+
pool_size=50, # 连接池大小
|
|
90
|
+
pool_timeout=30, # 池中没有线程最多等待的时间,否则报错
|
|
91
|
+
pool_recycle=3600, # 多久之后对线程池中的线程进行一次连接的回收(重置)
|
|
92
|
+
echo=True)
|
|
93
|
+
sqla_helper = SqlaReflectHelper(enginex)
|
|
94
|
+
t_funboost_consume_results = sqla_helper.base_classes.funboost_consume_results
|
|
95
|
+
return enginex, sqla_helper, t_funboost_consume_results
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def save_result_status_to_sqlalchemy(function_result_status: FunctionResultStatus):
|
|
99
|
+
""" function_result_status变量上有各种丰富的信息 ,用户可以使用其中的信息
|
|
100
|
+
用户自定义记录函数消费信息的钩子函数
|
|
101
|
+
|
|
102
|
+
例如 @boost('test_user_custom', user_custom_record_process_info_func=save_result_status_to_sqlalchemy)
|
|
103
|
+
"""
|
|
104
|
+
enginex, sqla_helper, t_funboost_consume_results = get_sqla_helper()
|
|
105
|
+
|
|
106
|
+
with sqla_helper.session as ss:
|
|
107
|
+
status_dict = function_result_status.get_status_dict()
|
|
108
|
+
status_dict_new = copy.copy(status_dict)
|
|
109
|
+
for k, v in status_dict.items():
|
|
110
|
+
if isinstance(v, dict):
|
|
111
|
+
status_dict_new[k] = json.dumps(v)
|
|
112
|
+
# sql = _gen_insert_sqlalchemy(status_dict) # 这种是sqlahemy sql方式插入.
|
|
113
|
+
# ss.execute(sql, status_dict_new)
|
|
114
|
+
ss.merge(t_funboost_consume_results(**status_dict_new)) # 这种是orm方式插入.
|
|
@@ -85,6 +85,24 @@ class BoosterFire(object):
|
|
|
85
85
|
BoostersManager.get_booster(queue_anme).consume()
|
|
86
86
|
ctrl_c_recv()
|
|
87
87
|
|
|
88
|
+
def consume_all_queues(self,):
|
|
89
|
+
"""
|
|
90
|
+
启动所有消息队列名的消费,无需指定队列名;
|
|
91
|
+
例子: consume_all_queues
|
|
92
|
+
"""
|
|
93
|
+
for queue_anme in BoostersManager.get_all_queues():
|
|
94
|
+
BoostersManager.get_booster(queue_anme).consume()
|
|
95
|
+
ctrl_c_recv()
|
|
96
|
+
|
|
97
|
+
def multi_process_consume_all_queues(self,process_num):
|
|
98
|
+
"""
|
|
99
|
+
启动所有消息队列名的消费,无需指定队列名,每个队列启动n个单独的消费进程;
|
|
100
|
+
例子: multi_process_consume_all_queues 2
|
|
101
|
+
"""
|
|
102
|
+
for queue_anme in BoostersManager.get_all_queues():
|
|
103
|
+
BoostersManager.get_booster(queue_anme).multi_process_consume(process_num)
|
|
104
|
+
ctrl_c_recv()
|
|
105
|
+
|
|
88
106
|
def multi_process_consume(self, **queue_name__process_num):
|
|
89
107
|
"""
|
|
90
108
|
使用多进程启动消费,每个队列开启多个单独的进程消费;
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
class FunboostException(Exception):
|
|
4
|
+
"""funboost 异常基类"""
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ExceptionForRetry(FunboostException):
|
|
2
8
|
"""为了重试的,抛出错误。只是定义了一个子类,用不用都可以,函数出任何类型错误了框架都会自动重试"""
|
|
3
9
|
|
|
4
10
|
|
|
5
|
-
class ExceptionForRequeue(
|
|
11
|
+
class ExceptionForRequeue(FunboostException):
|
|
6
12
|
"""框架检测到此错误,重新放回当前队列中"""
|
|
7
13
|
|
|
8
14
|
|
|
9
|
-
class ExceptionForPushToDlxqueue(
|
|
15
|
+
class ExceptionForPushToDlxqueue(FunboostException):
|
|
10
16
|
"""框架检测到ExceptionForPushToDlxqueue错误,发布到死信队列"""
|
|
11
17
|
|
|
12
18
|
|
|
13
|
-
class BoostDecoParamsIsOldVersion(
|
|
19
|
+
class BoostDecoParamsIsOldVersion(FunboostException):
|
|
14
20
|
new_version_change_hint = """
|
|
15
21
|
你的@boost入参是老的方式,建议用新的入参方式,老入参方式不再支持函数入参代码自动补全了。
|
|
16
22
|
|
|
@@ -42,7 +42,7 @@ class FunboostMetaTypeFileLogger(type):
|
|
|
42
42
|
|
|
43
43
|
flogger = get_funboost_file_logger('funboost', )
|
|
44
44
|
|
|
45
|
-
print(_try_get_user_funboost_common_config('FUNBOOST_PROMPT_LOG_LEVEL'))
|
|
45
|
+
# print(_try_get_user_funboost_common_config('FUNBOOST_PROMPT_LOG_LEVEL'))
|
|
46
46
|
logger_prompt = get_funboost_file_logger('funboost.prompt', log_level_int=_try_get_user_funboost_common_config('FUNBOOST_PROMPT_LOG_LEVEL') or logging.DEBUG) # funboost框架的提示,用户自己可以设置日志级别
|
|
47
47
|
nb_log.LogManager('_KeepAliveTimeThread').preset_log_level(_try_get_user_funboost_common_config('KEEPALIVETIMETHREAD_LOG_LEVEL') or logging.DEBUG)
|
|
48
48
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 42.
|
|
3
|
+
Version: 42.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
|
|
@@ -147,11 +147,15 @@ pip install funboost --upgrade
|
|
|
147
147
|
[//]: # ()
|
|
148
148
|
[//]: # ([img-46.png](https://postimg.cc/hfW0VhCX))
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
funboost示图:
|
|
151
|
+

|
|
152
|
+
|
|
151
153
|
|
|
152
154
|
[//]: # ([](https://postimg.cc/hfW0VhCX))
|
|
153
|
-
|
|
154
|
-
|
|
155
|
+
|
|
156
|
+
[//]: # (就是最普通的生产者消费者流程图)
|
|
157
|
+
|
|
158
|
+
[//]: # ()
|
|
155
159
|
|
|
156
160
|
也就是这种非常普通的流程图,一样的意思
|
|
157
161
|
|
|
@@ -85,8 +85,10 @@ funboost/consumers/udp_consumer.py
|
|
|
85
85
|
funboost/consumers/zeromq_consumer.py
|
|
86
86
|
funboost/contrib/__init__.py
|
|
87
87
|
funboost/contrib/api_publish_msg.py
|
|
88
|
+
funboost/contrib/django_db_deco.py
|
|
88
89
|
funboost/contrib/queue2queue.py
|
|
89
90
|
funboost/contrib/redis_consume_latest_msg_broker.py
|
|
91
|
+
funboost/contrib/save_result_status_to_sqldb.py
|
|
90
92
|
funboost/core/__init__.py
|
|
91
93
|
funboost/core/active_cousumer_info_getter.py
|
|
92
94
|
funboost/core/booster.py
|
|
@@ -47,7 +47,7 @@ confluent_kafka==1.7.0
|
|
|
47
47
|
celery
|
|
48
48
|
flower
|
|
49
49
|
nameko==2.14.1
|
|
50
|
-
sqlalchemy==1.4.
|
|
50
|
+
sqlalchemy==1.4.13
|
|
51
51
|
sqlalchemy_utils==0.36.1
|
|
52
52
|
dramatiq==1.14.2
|
|
53
53
|
huey==2.4.5
|
|
@@ -62,7 +62,7 @@ confluent_kafka==1.7.0
|
|
|
62
62
|
celery
|
|
63
63
|
flower
|
|
64
64
|
nameko==2.14.1
|
|
65
|
-
sqlalchemy==1.4.
|
|
65
|
+
sqlalchemy==1.4.13
|
|
66
66
|
sqlalchemy_utils==0.36.1
|
|
67
67
|
dramatiq==1.14.2
|
|
68
68
|
huey==2.4.5
|
|
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-42.0 → funboost-42.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-42.0 → funboost-42.2}/funboost/concurrent_pool/backup/async_pool_executor_janus.py
RENAMED
|
File without changes
|
|
File without changes
|
{funboost-42.0 → funboost-42.2}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funboost-42.0 → funboost-42.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
|
{funboost-42.0 → funboost-42.2}/funboost/factories/broker_kind__publsiher_consumer_type_map.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|