funboost 44.4__tar.gz → 44.5__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-44.4/funboost.egg-info → funboost-44.5}/PKG-INFO +1 -2
- {funboost-44.4 → funboost-44.5}/funboost/__init__.py +1 -1
- {funboost-44.4 → funboost-44.5}/funboost/constant.py +9 -10
- {funboost-44.4 → funboost-44.5}/funboost/consumers/base_consumer.py +3 -4
- funboost-44.5/funboost/consumers/redis_consumer_ack_using_timeout.py +77 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_consumer_simple.py +0 -1
- {funboost-44.4 → funboost-44.5}/funboost/contrib/api_publish_msg.py +4 -3
- {funboost-44.4 → funboost-44.5}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +3 -2
- funboost-44.5/funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/decorators.py +1 -0
- funboost-44.5/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
- funboost-44.5/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +59 -59
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
- funboost-44.5/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +4804 -4804
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +8 -8
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +1668 -1668
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +96 -96
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +306 -306
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +15 -15
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +329 -329
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +61 -61
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +133 -133
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +16 -16
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +244 -244
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +98 -98
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +7 -7
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +7 -7
- {funboost-44.4 → funboost-44.5}/funboost/utils/json_helper.py +14 -1
- {funboost-44.4 → funboost-44.5}/funboost/utils/times/__init__.py +85 -85
- {funboost-44.4 → funboost-44.5}/funboost/utils/times/version.py +1 -1
- {funboost-44.4 → funboost-44.5/funboost.egg-info}/PKG-INFO +1 -2
- {funboost-44.4 → funboost-44.5}/funboost.egg-info/SOURCES.txt +2 -30
- {funboost-44.4 → funboost-44.5}/funboost.egg-info/entry_points.txt +0 -1
- funboost-44.4/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
- funboost-44.4/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
- funboost-44.4/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
- {funboost-44.4 → funboost-44.5}/LICENSE +0 -0
- {funboost-44.4 → funboost-44.5}/MANIFEST.in +0 -0
- {funboost-44.4 → funboost-44.5}/README.md +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/__init__old.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/__main__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/assist/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/assist/celery_helper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/assist/dramatiq_helper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/assist/huey_helper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/assist/rocketry_helper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/assist/rq_helper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/assist/rq_windows_worker.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/async_helper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/async_pool_executor.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/backup/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/base_pool_type.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/pool_commons.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/concurrent_pool/single_thread_executor.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/celery_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/confirm_mixin.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/dramatiq_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/http_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/http_consumer000.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/httpsqs_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/huey_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/kafka_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/kombu_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/local_python_queue_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/memory_deque_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/mongomq_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/mqtt_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/nameko_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/nats_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/nsq_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/peewee_conusmer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/persist_queue_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/pulsar_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_consumer_ack_able.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_consumer_priority.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_filter.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_pubsub_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/redis_stream_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/rocketmq_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/rq_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/sqlachemy_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/tcp_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/txt_file_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/udp_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/consumers/zeromq_consumer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/contrib/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/contrib/django_db_deco.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/contrib/queue2queue.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/active_cousumer_info_getter.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/booster.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/cli/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/cli/discovery_boosters.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/cli/funboost_fire.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/current_task.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/exceptions.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/fabric_deploy_helper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/funboost_config_getter.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/funboost_time.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/func_params_model.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/function_result_status_config.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/function_result_status_saver.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/helper_funs.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/kill_remote_task.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/lazy_impoter.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/loggers.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/msg_result_getter.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/muliti_process_enhance.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/core/task_id_logger.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/factories/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/factories/consumer_factory.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/factories/publisher_factotry.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/funboost_config_deafult.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/app.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/functions.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/assets/css/custom.css +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/assets/js/custom.js +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/css/style.css +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/images/bg.jpg +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/images/password.png +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/images/tick.png +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/images/user.png +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/templates/index.html +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/function_result_web/templates/login.html +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/base_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/celery_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/celery_publisher000.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/confluent_kafka_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/dramatiq_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/http_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/httpsqs_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/huey_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/kafka_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/kombu_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/local_python_queue_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/meomory_deque_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/mongomq_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/mqtt_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/nameko_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/nats_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/nsq_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/peewee_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/persist_queue_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/pulsar_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/redis_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/redis_publisher_lpush.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/redis_publisher_priority.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/redis_publisher_simple.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/redis_pubsub_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/redis_stream_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/rocketmq_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/rq_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/sqla_queue_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/tcp_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/txt_file_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/udp_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/publishers/zeromq_publisher.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/queues/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/queues/peewee_queue.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/queues/sqla_queue.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/set_frame_config.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/timing_job/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/apscheduler_monkey.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/block_exit.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/bulk_operation.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/ctrl_c_end.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/custom_pysnooper.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/develop_log.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/expire_lock.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/mongo_util.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/monkey_color_log.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/monkey_patches.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/mqtt_util.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/paramiko_util.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/pysnooper_ydf/utils.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/pysnooper_ydf/variables.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/rabbitmq_factory.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/redis_manager.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/redis_manager_old.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/resource_monitoring.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/restart_python.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/simple_data_class.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/time_util.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost/utils/un_strict_json_dumps.py +0 -0
- {funboost-44.4 → funboost-44.5}/funboost.egg-info/dependency_links.txt +0 -0
- {funboost-44.4 → funboost-44.5}/funboost.egg-info/requires.txt +0 -0
- {funboost-44.4 → funboost-44.5}/funboost.egg-info/top_level.txt +0 -0
- {funboost-44.4 → funboost-44.5}/setup.cfg +0 -0
- {funboost-44.4 → funboost-44.5}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 44.
|
|
3
|
+
Version: 44.5
|
|
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
|
|
@@ -492,4 +492,3 @@ funboost通过支持celery作为broker_kind,使celer框架变成了funboost的
|
|
|
492
492
|

|
|
493
493
|
|
|
494
494
|
<div> </div>
|
|
495
|
-
|
|
@@ -3,14 +3,20 @@ class BrokerEnum:
|
|
|
3
3
|
RABBITMQ_AMQPSTORM = 'RABBITMQ_AMQPSTORM' # 使用 amqpstorm 包操作rabbitmq 作为 分布式消息队列,支持消费确认.强烈推荐这个作为funboost中间件。
|
|
4
4
|
RABBITMQ = RABBITMQ_AMQPSTORM
|
|
5
5
|
|
|
6
|
-
RABBITMQ_RABBITPY = 'RABBITMQ_RABBITPY' # 使用 rabbitpy 包操作rabbitmq 作为
|
|
6
|
+
RABBITMQ_RABBITPY = 'RABBITMQ_RABBITPY' # 使用 rabbitpy 包操作rabbitmq 作为 分布式消息队列,支持消费确认,不建议使用
|
|
7
7
|
|
|
8
8
|
REDIS = 'REDIS' # 使用 redis 的 list结构,brpop 作为分布式消息队列。随意重启和关闭会丢失大量消息,不支持消费确认。注重性能不在乎丢失消息可以选这个redis方案。
|
|
9
|
+
REDIS_ACK_ABLE = 'REDIS_ACK_ABLE' # 基于redis的 list + 临时unack的set队列,采用了 lua脚本操持了取任务和加到pengding为原子性,,基于进程心跳消失判断消息是否为掉线进程的,随意重启和掉线不会丢失任务。
|
|
10
|
+
REIDS_ACK_USING_TIMEOUT = 'reids_ack_using_timeout' # 基于redis的 list + 临时unack的set队列,使用超时多少秒没确认消费就自动重回队列,请注意 ack_timeout的设置值和函数耗时大小,否则会发生反复重回队列的后果,boost可以设置ack超时,broker_exclusive_config={'ack_timeout': 1800}
|
|
11
|
+
REDIS_PRIORITY = 'REDIS_PRIORITY' # # 基于redis的多 list + 临时unack的set队列,blpop监听多个key,和rabbitmq的x-max-priority属性一样,支持任务优先级。看文档4.29优先级队列说明。
|
|
12
|
+
REDIS_STREAM = 'REDIS_STREAM' # 基于redis 5.0 版本以后,使用 stream 数据结构作为分布式消息队列,支持消费确认和持久化和分组消费,是redis官方推荐的消息队列形式,比list结构更适合。
|
|
13
|
+
RedisBrpopLpush = 'RedisBrpopLpush' # 基于redis的list结构但是采用brpoplpush 双队列形式,和 redis_ack_able的实现差不多,实现上采用了原生命令就不需要lua脚本来实现取出和加入unack了。
|
|
14
|
+
REDIS_PUBSUB = 'REDIS_PUBSUB' # 基于redis 发布订阅的,发布一个消息多个消费者都能收到同一条消息,但不支持持久化
|
|
9
15
|
|
|
10
16
|
MEMORY_QUEUE = 'MEMORY_QUEUE' # 使用python queue.Queue实现的基于当前python进程的消息队列,不支持跨进程 跨脚本 跨机器共享任务,不支持持久化,适合一次性短期简单任务。
|
|
11
17
|
LOCAL_PYTHON_QUEUE = MEMORY_QUEUE # 别名,python本地queue就是基于python自带的语言的queue.Queue,消息存在python程序的内存中,不支持重启断点接续。
|
|
12
18
|
|
|
13
|
-
RABBITMQ_PIKA = 'RABBITMQ_PIKA' # 使用pika包操作rabbitmq 作为
|
|
19
|
+
RABBITMQ_PIKA = 'RABBITMQ_PIKA' # 使用pika包操作rabbitmq 作为 分布式消息队列。,不建议使用
|
|
14
20
|
|
|
15
21
|
MONGOMQ = 'MONGOMQ' # 使用mongo的表中的行模拟的 作为分布式消息队列,支持消费确认。
|
|
16
22
|
|
|
@@ -27,19 +33,13 @@ class BrokerEnum:
|
|
|
27
33
|
|
|
28
34
|
KAFKA_CONFLUENT_SASlPlAIN = 'KAFKA_CONFLUENT_SASlPlAIN' # 可以设置账号密码的kafka
|
|
29
35
|
|
|
30
|
-
REDIS_ACK_ABLE = 'REDIS_ACK_ABLE' # 基于redis的 list + 临时unack的set队列,采用了 lua脚本操持了取任务和加到pengding为原子性,随意重启和掉线不会丢失任务。
|
|
31
|
-
|
|
32
|
-
REDIS_PRIORITY = 'REDIS_PRIORITY' # # 基于redis的多 list + 临时unack的set队列,blpop监听多个key,和rabbitmq的x-max-priority属性一样,支持任务优先级。看文档4.29优先级队列说明。
|
|
33
|
-
|
|
34
36
|
SQLACHEMY = 'SQLACHEMY' # 基于SQLACHEMY 的连接作为分布式消息队列中间件支持持久化和消费确认。支持mysql oracle sqlserver等5种数据库。
|
|
35
37
|
|
|
36
38
|
ROCKETMQ = 'ROCKETMQ' # 基于 rocketmq 作为分布式消息队列,这个中间件必须在linux下运行,win不支持。
|
|
37
39
|
|
|
38
|
-
REDIS_STREAM = 'REDIS_STREAM' # 基于redis 5.0 版本以后,使用 stream 数据结构作为分布式消息队列,支持消费确认和持久化和分组消费,是redis官方推荐的消息队列形式,比list结构更适合。
|
|
39
|
-
|
|
40
40
|
ZEROMQ = 'ZEROMQ' # 基于zeromq作为分布式消息队列,不需要安装中间件,可以支持跨机器但不支持持久化。
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
|
|
44
44
|
"""
|
|
45
45
|
操作 kombu 包,这个包也是celery的中间件依赖包,这个包可以操作10种中间件(例如rabbitmq redis),但没包括分布式函数调度框架的kafka nsq zeromq 等。
|
|
@@ -69,7 +69,6 @@ class BrokerEnum:
|
|
|
69
69
|
|
|
70
70
|
PEEWEE = 'PEEWEE' # peewee包操作mysql,使用表模拟消息队列
|
|
71
71
|
|
|
72
|
-
REDIS_PUBSUB = 'REDIS_PUBSUB' # 基于redis 发布订阅的,发布一个消息多个消费者都能收到同一条消息,但不支持持久化
|
|
73
72
|
|
|
74
73
|
CELERY = 'CELERY' # funboost支持celery框架来发布和消费任务,由celery框架来调度执行任务,但是写法简单远远暴击用户亲自使用celery的麻烦程度,
|
|
75
74
|
# 用户永无无需关心和操作Celery对象实例,无需关心celery的task_routes和include配置,funboost来自动化设置这些celery配置。
|
|
@@ -35,6 +35,7 @@ from funboost.core.loggers import develop_logger
|
|
|
35
35
|
|
|
36
36
|
from funboost.core.func_params_model import BoosterParams, PublisherParams, BaseJsonAbleModel
|
|
37
37
|
from funboost.core.task_id_logger import TaskIdLogger
|
|
38
|
+
from funboost.utils.json_helper import JsonUtils
|
|
38
39
|
from nb_log import (get_logger, LoggerLevelSetterMixin, LogManager, is_main_process,
|
|
39
40
|
nb_log_config_default)
|
|
40
41
|
from funboost.core.loggers import FunboostFileLoggerMixin, logger_prompt
|
|
@@ -428,8 +429,8 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
428
429
|
self._last_show_pause_log_time = time.time()
|
|
429
430
|
else:
|
|
430
431
|
break
|
|
431
|
-
self._print_message_get_from_broker(kw['body'])
|
|
432
432
|
kw['body'] = self.convert_msg_before_run(kw['body'])
|
|
433
|
+
self._print_message_get_from_broker(kw['body'])
|
|
433
434
|
if self._judge_is_daylight():
|
|
434
435
|
self._requeue(kw)
|
|
435
436
|
time.sleep(self.time_interval_for_check_do_not_run_time)
|
|
@@ -531,10 +532,8 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
531
532
|
def _print_message_get_from_broker(self, msg, broker_name=None):
|
|
532
533
|
# print(999)
|
|
533
534
|
if self.consumer_params.is_show_message_get_from_broker:
|
|
534
|
-
if isinstance(msg, (dict, list)):
|
|
535
|
-
msg = json.dumps(msg, ensure_ascii=False)
|
|
536
535
|
# self.logger.debug(f'从 {broker_name} 中间件 的 {self._queue_name} 中取出的消息是 {msg}')
|
|
537
|
-
self.logger.debug(f'从 {broker_name or self.consumer_params.broker_kind} 中间件 的 {self._queue_name} 中取出的消息是 {msg}')
|
|
536
|
+
self.logger.debug(f'从 {broker_name or self.consumer_params.broker_kind} 中间件 的 {self._queue_name} 中取出的消息是 {JsonUtils.to_json_str(msg)}')
|
|
538
537
|
|
|
539
538
|
def _get_priority_conf(self, kw: dict, broker_task_config_key: str):
|
|
540
539
|
broker_task_config = kw['body'].get('extra', {}).get(broker_task_config_key, None)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# @Author : ydf
|
|
3
|
+
# @Time : 2024/8/8 0008 13:32
|
|
4
|
+
import json
|
|
5
|
+
import time
|
|
6
|
+
from funboost.consumers.base_consumer import AbstractConsumer
|
|
7
|
+
from funboost.utils.decorators import RedisDistributedLockContextManager
|
|
8
|
+
from funboost.utils.json_helper import JsonUtils
|
|
9
|
+
from funboost.utils.redis_manager import RedisMixin
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class RedisConsumerAckUsingTimeout(AbstractConsumer, RedisMixin):
|
|
13
|
+
"""
|
|
14
|
+
redis作为中间件实现的。
|
|
15
|
+
使用超时未能ack就自动重入消息队列,例如消息取出后,由于突然断电或重启或其他原因,导致消息以后再也不能主动ack了,超过一定时间就重新放入消息队列
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
BROKER_EXCLUSIVE_CONFIG_DEFAULT = {'ack_timeout': 3600}
|
|
19
|
+
|
|
20
|
+
# RedisConsumerAckUsingTimeout的ack timeot 是代表消息取出后过了多少秒还未ack,就自动重回队列。这个配置一定要大于函数消耗时间,否则不停的重回队列。
|
|
21
|
+
'''用法,如何设置ack_timeout,是使用 broker_exclusive_config 中传递,就能覆盖这里的3600,用户不用改BROKER_EXCLUSIVE_CONFIG_DEFAULT的源码。
|
|
22
|
+
@boost(BoosterParams(queue_name='test_redis_ack__use_timeout', broker_kind=BrokerEnum.REIDS_ACK_USING_TIMEOUT,
|
|
23
|
+
concurrent_num=5, log_level=20, broker_exclusive_config={'ack_timeout': 30}))
|
|
24
|
+
'''
|
|
25
|
+
|
|
26
|
+
def custom_init(self):
|
|
27
|
+
self._unack_zset_name = f'{self._queue_name}__unack_using_timeout'
|
|
28
|
+
self._ack_timeout = self.consumer_params.broker_exclusive_config['ack_timeout']
|
|
29
|
+
self._last_show_unack_ts = time.time()
|
|
30
|
+
|
|
31
|
+
def start_consuming_message(self):
|
|
32
|
+
self._is_send_consumer_hearbeat_to_redis = True
|
|
33
|
+
super().start_consuming_message()
|
|
34
|
+
self.keep_circulating(10, block=False)(self._requeue_tasks_which_unconfirmed)()
|
|
35
|
+
|
|
36
|
+
# def _add_task_str_to_unack_zset(self, task_str, ):
|
|
37
|
+
# self.redis_db_frame.zadd(self._unack_zset_name, {task_str: time.time()})
|
|
38
|
+
|
|
39
|
+
def _confirm_consume(self, kw):
|
|
40
|
+
self.redis_db_frame.zrem(self._unack_zset_name, kw['task_str'])
|
|
41
|
+
|
|
42
|
+
def _requeue(self, kw):
|
|
43
|
+
self.redis_db_frame.rpush(self._queue_name, JsonUtils.to_json_str(kw['body']))
|
|
44
|
+
|
|
45
|
+
def _shedual_task(self):
|
|
46
|
+
lua = '''
|
|
47
|
+
local v = redis.call("lpop", KEYS[1])
|
|
48
|
+
if v then
|
|
49
|
+
redis.call('zadd',KEYS[2],ARGV[1],v)
|
|
50
|
+
end
|
|
51
|
+
return v
|
|
52
|
+
'''
|
|
53
|
+
script = self.redis_db_frame.register_script(lua)
|
|
54
|
+
while True:
|
|
55
|
+
return_v = script(keys=[self._queue_name, self._unack_zset_name], args=[time.time()])
|
|
56
|
+
if return_v:
|
|
57
|
+
task_str = return_v
|
|
58
|
+
kw = {'body': task_str, 'task_str': task_str}
|
|
59
|
+
self._submit_task(kw)
|
|
60
|
+
else:
|
|
61
|
+
time.sleep(0.1)
|
|
62
|
+
|
|
63
|
+
def _requeue_tasks_which_unconfirmed(self):
|
|
64
|
+
"""不使用这种方案,不适合本来来就需要长耗时的函数,很死板"""
|
|
65
|
+
# 防止在多个进程或多个机器中同时做扫描和放入未确认消费的任务。使用个分布式锁。
|
|
66
|
+
lock_key = f'funboost_lock__requeue_tasks_which_unconfirmed_timeout:{self._queue_name}'
|
|
67
|
+
with RedisDistributedLockContextManager(self.redis_db_frame, lock_key, ) as lock:
|
|
68
|
+
if lock.has_aquire_lock:
|
|
69
|
+
time_max = time.time() - self._ack_timeout
|
|
70
|
+
for value in self.redis_db_frame.zrangebyscore(self._unack_zset_name, 0, time_max):
|
|
71
|
+
self.logger.warning(f'超过了 {self._ack_timeout} 秒未能确认消费, 向 {self._queue_name} 队列重新放入未消费确认的任务 {value} ,')
|
|
72
|
+
self._requeue({'body': value})
|
|
73
|
+
self.redis_db_frame.zrem(self._unack_zset_name, value)
|
|
74
|
+
if time.time() - self._last_show_unack_ts > 600: # 不要频繁提示打扰
|
|
75
|
+
self.logger.info(f'{self._unack_zset_name} 中有待确认消费任务的数量是'
|
|
76
|
+
f' {self.redis_db_frame.zcard(self._unack_zset_name)}')
|
|
77
|
+
self._last_show_unack_ts = time.time()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import traceback
|
|
2
2
|
import typing
|
|
3
3
|
|
|
4
|
-
from funboost import AioAsyncResult, AsyncResult
|
|
4
|
+
from funboost import AioAsyncResult, AsyncResult,PriorityConsumingControlConfig
|
|
5
5
|
|
|
6
6
|
from funboost.core.cli.discovery_boosters import BoosterDiscovery
|
|
7
7
|
from funboost import BoostersManager
|
|
@@ -39,11 +39,12 @@ async def publish_msg(msg_item: MsgItem):
|
|
|
39
39
|
if msg_item.need_result:
|
|
40
40
|
if booster.boost_params.is_using_rpc_mode is False:
|
|
41
41
|
raise ValueError(f' need_result 为true,{booster.queue_name} 队列消费者 需要@boost设置支持rpc模式')
|
|
42
|
-
async_result = booster.
|
|
42
|
+
async_result = await booster.aio_publish(msg_item.msg_body,priority_control_config=PriorityConsumingControlConfig(is_using_rpc_mode=True))
|
|
43
43
|
status_and_result = await AioAsyncResult(async_result.task_id, timeout=msg_item.timeout).status_and_result
|
|
44
|
+
print(status_and_result)
|
|
44
45
|
# status_and_result = AsyncResult(async_result.task_id, timeout=msg_item.timeout).status_and_result
|
|
45
46
|
else:
|
|
46
|
-
booster.
|
|
47
|
+
await booster.aio_publish(msg_item.msg_body)
|
|
47
48
|
return PublishResponse(succ=True, msg=f'{msg_item.queue_name} 队列,消息发布成功', status_and_result=status_and_result)
|
|
48
49
|
except Exception as e:
|
|
49
50
|
return PublishResponse(succ=False, msg=f'{msg_item.queue_name} 队列,消息发布失败 {type(e)} {e} {traceback.format_exc()}',
|
{funboost-44.4 → funboost-44.5}/funboost/factories/broker_kind__publsiher_consumer_type_map.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
from funboost.publishers.http_publisher import HTTPPublisher
|
|
4
5
|
from funboost.publishers.nats_publisher import NatsPublisher
|
|
5
6
|
from funboost.publishers.peewee_publisher import PeeweePublisher
|
|
@@ -48,6 +49,7 @@ from funboost.consumers.udp_consumer import UDPConsumer
|
|
|
48
49
|
from funboost.consumers.zeromq_consumer import ZeroMqConsumer
|
|
49
50
|
from funboost.consumers.mqtt_consumer import MqttConsumer
|
|
50
51
|
from funboost.consumers.httpsqs_consumer import HttpsqsConsumer
|
|
52
|
+
from funboost.consumers.redis_consumer_ack_using_timeout import RedisConsumerAckUsingTimeout
|
|
51
53
|
|
|
52
54
|
from funboost.publishers.base_publisher import AbstractPublisher
|
|
53
55
|
from funboost.consumers.base_consumer import AbstractConsumer
|
|
@@ -77,6 +79,7 @@ broker_kind__publsiher_consumer_type_map = {
|
|
|
77
79
|
BrokerEnum.TXT_FILE: (TxtFilePublisher, TxtFileConsumer),
|
|
78
80
|
BrokerEnum.PEEWEE: (PeeweePublisher, PeeweeConsumer),
|
|
79
81
|
BrokerEnum.REDIS_PUBSUB: (RedisPubSubPublisher, RedisPbSubConsumer),
|
|
82
|
+
BrokerEnum.REIDS_ACK_USING_TIMEOUT: (RedisPublisher, RedisConsumerAckUsingTimeout),
|
|
80
83
|
|
|
81
84
|
}
|
|
82
85
|
|
|
@@ -163,8 +166,6 @@ def regist_to_funboost(broker_kind: str):
|
|
|
163
166
|
register_custom_broker(broker_kind, NsqPublisher, NsqConsumer)
|
|
164
167
|
|
|
165
168
|
|
|
166
|
-
|
|
167
|
-
|
|
168
169
|
if __name__ == '__main__':
|
|
169
170
|
import sys
|
|
170
171
|
|
|
@@ -332,6 +332,7 @@ class RedisDistributedLockContextManager(LoggerMixin, LoggerLevelSetterMixin):
|
|
|
332
332
|
self._expire_seconds = expire_seconds
|
|
333
333
|
self.identifier = str(uuid.uuid4())
|
|
334
334
|
self.has_aquire_lock = False
|
|
335
|
+
self.logger.setLevel(logging.INFO)
|
|
335
336
|
|
|
336
337
|
def __enter__(self):
|
|
337
338
|
self._line = sys._getframe().f_back.f_lineno # 调用此方法的代码的函数
|
funboost-44.5/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
from aioredis.client import Redis, StrictRedis
|
|
2
|
-
from aioredis.connection import (
|
|
3
|
-
BlockingConnectionPool,
|
|
4
|
-
Connection,
|
|
5
|
-
ConnectionPool,
|
|
6
|
-
SSLConnection,
|
|
7
|
-
UnixDomainSocketConnection,
|
|
8
|
-
)
|
|
9
|
-
from aioredis.exceptions import (
|
|
10
|
-
AuthenticationError,
|
|
11
|
-
AuthenticationWrongNumberOfArgsError,
|
|
12
|
-
BusyLoadingError,
|
|
13
|
-
ChildDeadlockedError,
|
|
14
|
-
ConnectionError,
|
|
15
|
-
DataError,
|
|
16
|
-
InvalidResponse,
|
|
17
|
-
PubSubError,
|
|
18
|
-
ReadOnlyError,
|
|
19
|
-
RedisError,
|
|
20
|
-
ResponseError,
|
|
21
|
-
TimeoutError,
|
|
22
|
-
WatchError,
|
|
23
|
-
)
|
|
24
|
-
from aioredis.utils import from_url
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def int_or_str(value):
|
|
28
|
-
try:
|
|
29
|
-
return int(value)
|
|
30
|
-
except ValueError:
|
|
31
|
-
return value
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
__version__ = "2.0.1"
|
|
35
|
-
VERSION = tuple(map(int_or_str, __version__.split(".")))
|
|
36
|
-
|
|
37
|
-
__all__ = [
|
|
38
|
-
"AuthenticationError",
|
|
39
|
-
"AuthenticationWrongNumberOfArgsError",
|
|
40
|
-
"BlockingConnectionPool",
|
|
41
|
-
"BusyLoadingError",
|
|
42
|
-
"ChildDeadlockedError",
|
|
43
|
-
"Connection",
|
|
44
|
-
"ConnectionError",
|
|
45
|
-
"ConnectionPool",
|
|
46
|
-
"DataError",
|
|
47
|
-
"from_url",
|
|
48
|
-
"InvalidResponse",
|
|
49
|
-
"PubSubError",
|
|
50
|
-
"ReadOnlyError",
|
|
51
|
-
"Redis",
|
|
52
|
-
"RedisError",
|
|
53
|
-
"ResponseError",
|
|
54
|
-
"SSLConnection",
|
|
55
|
-
"StrictRedis",
|
|
56
|
-
"TimeoutError",
|
|
57
|
-
"UnixDomainSocketConnection",
|
|
58
|
-
"WatchError",
|
|
59
|
-
]
|
|
1
|
+
from aioredis.client import Redis, StrictRedis
|
|
2
|
+
from aioredis.connection import (
|
|
3
|
+
BlockingConnectionPool,
|
|
4
|
+
Connection,
|
|
5
|
+
ConnectionPool,
|
|
6
|
+
SSLConnection,
|
|
7
|
+
UnixDomainSocketConnection,
|
|
8
|
+
)
|
|
9
|
+
from aioredis.exceptions import (
|
|
10
|
+
AuthenticationError,
|
|
11
|
+
AuthenticationWrongNumberOfArgsError,
|
|
12
|
+
BusyLoadingError,
|
|
13
|
+
ChildDeadlockedError,
|
|
14
|
+
ConnectionError,
|
|
15
|
+
DataError,
|
|
16
|
+
InvalidResponse,
|
|
17
|
+
PubSubError,
|
|
18
|
+
ReadOnlyError,
|
|
19
|
+
RedisError,
|
|
20
|
+
ResponseError,
|
|
21
|
+
TimeoutError,
|
|
22
|
+
WatchError,
|
|
23
|
+
)
|
|
24
|
+
from aioredis.utils import from_url
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def int_or_str(value):
|
|
28
|
+
try:
|
|
29
|
+
return int(value)
|
|
30
|
+
except ValueError:
|
|
31
|
+
return value
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
__version__ = "2.0.1"
|
|
35
|
+
VERSION = tuple(map(int_or_str, __version__.split(".")))
|
|
36
|
+
|
|
37
|
+
__all__ = [
|
|
38
|
+
"AuthenticationError",
|
|
39
|
+
"AuthenticationWrongNumberOfArgsError",
|
|
40
|
+
"BlockingConnectionPool",
|
|
41
|
+
"BusyLoadingError",
|
|
42
|
+
"ChildDeadlockedError",
|
|
43
|
+
"Connection",
|
|
44
|
+
"ConnectionError",
|
|
45
|
+
"ConnectionPool",
|
|
46
|
+
"DataError",
|
|
47
|
+
"from_url",
|
|
48
|
+
"InvalidResponse",
|
|
49
|
+
"PubSubError",
|
|
50
|
+
"ReadOnlyError",
|
|
51
|
+
"Redis",
|
|
52
|
+
"RedisError",
|
|
53
|
+
"ResponseError",
|
|
54
|
+
"SSLConnection",
|
|
55
|
+
"StrictRedis",
|
|
56
|
+
"TimeoutError",
|
|
57
|
+
"UnixDomainSocketConnection",
|
|
58
|
+
"WatchError",
|
|
59
|
+
]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|