funboost 46.7__tar.gz → 46.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of funboost might be problematic. Click here for more details.
- {funboost-46.7/funboost.egg-info → funboost-46.8}/PKG-INFO +1 -1
- {funboost-46.7 → funboost-46.8}/funboost/__init__.py +1 -1
- {funboost-46.7 → funboost-46.8}/funboost/consumers/base_consumer.py +2 -2
- {funboost-46.7 → funboost-46.8}/funboost/timing_job/__init__.py +22 -21
- funboost-46.8/funboost/timing_job/apscheduler_use_redis_store.py +61 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/decorators.py +27 -0
- {funboost-46.7 → funboost-46.8/funboost.egg-info}/PKG-INFO +1 -1
- funboost-46.7/funboost/timing_job/apscheduler_use_redis_store.py +0 -30
- {funboost-46.7 → funboost-46.8}/LICENSE +0 -0
- {funboost-46.7 → funboost-46.8}/MANIFEST.in +0 -0
- {funboost-46.7 → funboost-46.8}/README.md +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/__init__old.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/__main__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/celery_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/dramatiq_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/faststream_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/huey_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/rocketry_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/rq_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/rq_windows_worker.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/assist/taskiq_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/async_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/async_pool_executor.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/backup/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/base_pool_type.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/pool_commons.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/single_thread_executor.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/constant.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/celery_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/confirm_mixin.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/dramatiq_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/empty_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/faststream_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/http_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/http_consumer000.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/httpsqs_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/huey_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/kafka_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/kombu_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/local_python_queue_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/memory_deque_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/mongomq_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/mqtt_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/nameko_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/nats_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/nsq_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/peewee_conusmer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/persist_queue_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/pulsar_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_consumer_ack_able.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_consumer_ack_using_timeout.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_consumer_priority.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_consumer_simple.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_filter.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_pubsub_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/redis_stream_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/rocketmq_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/rq_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/sqlachemy_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/tcp_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/txt_file_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/udp_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/consumers/zeromq_consumer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/contrib/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/contrib/api_publish_msg.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/contrib/django_db_deco.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/contrib/queue2queue.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/active_cousumer_info_getter.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/booster.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/cli/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/cli/discovery_boosters.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/cli/funboost_fire.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/current_task.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/exceptions.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/fabric_deploy_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/funboost_config_getter.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/funboost_time.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/func_params_model.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/function_result_status_config.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/function_result_status_saver.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/helper_funs.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/kill_remote_task.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/lazy_impoter.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/loggers.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/msg_result_getter.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/muliti_process_enhance.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/serialization.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/core/task_id_logger.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/factories/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/factories/consumer_factory.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/factories/publisher_factotry.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/funboost_config_deafult.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/app.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/functions.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/assets/css/custom.css +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/assets/js/custom.js +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/css/style.css +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/images/bg.jpg +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/images/password.png +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/images/tick.png +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/images/user.png +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/templates/index.html +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/function_result_web/templates/login.html +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/base_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/celery_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/celery_publisher000.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/confluent_kafka_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/dramatiq_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/empty_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/faststream_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/http_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/httpsqs_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/huey_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/kafka_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/kombu_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/local_python_queue_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/meomory_deque_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/mongomq_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/mqtt_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/nameko_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/nats_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/nsq_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/peewee_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/persist_queue_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/pulsar_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/redis_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/redis_publisher_lpush.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/redis_publisher_priority.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/redis_publisher_simple.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/redis_pubsub_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/redis_stream_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/rocketmq_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/rq_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/sqla_queue_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/tcp_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/txt_file_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/udp_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/publishers/zeromq_publisher.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/queues/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/queues/memory_queues_map.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/queues/peewee_queue.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/queues/sqla_queue.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/set_frame_config.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/apscheduler_monkey.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/block_exit.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/bulk_operation.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/class_utils.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/ctrl_c_end.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/custom_pysnooper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc2222.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/develop_log.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/expire_lock.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/json_helper.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/mongo_util.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/monkey_color_log.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/monkey_patches.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/mqtt_util.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/paramiko_util.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/pysnooper_ydf/utils.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/pysnooper_ydf/variables.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/rabbitmq_factory.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/redis_manager.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/redis_manager_old.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/resource_monitoring.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/restart_python.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/simple_data_class.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/str_utils.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/time_util.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/times/__init__.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/times/version.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost/utils/un_strict_json_dumps.py +0 -0
- {funboost-46.7 → funboost-46.8}/funboost.egg-info/SOURCES.txt +0 -0
- {funboost-46.7 → funboost-46.8}/funboost.egg-info/dependency_links.txt +0 -0
- {funboost-46.7 → funboost-46.8}/funboost.egg-info/entry_points.txt +0 -0
- {funboost-46.7 → funboost-46.8}/funboost.egg-info/requires.txt +0 -0
- {funboost-46.7 → funboost-46.8}/funboost.egg-info/top_level.txt +0 -0
- {funboost-46.7 → funboost-46.8}/setup.cfg +0 -0
- {funboost-46.7 → funboost-46.8}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 46.
|
|
3
|
+
Version: 46.8
|
|
4
4
|
Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
|
|
5
5
|
Home-page: https://github.com/ydf0509/funboost
|
|
6
6
|
Author: bfzs
|
|
@@ -369,7 +369,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
369
369
|
|
|
370
370
|
def _start_delay_task_scheduler(self):
|
|
371
371
|
from funboost.timing_job import FsdfBackgroundScheduler
|
|
372
|
-
from funboost.timing_job import FunboostBackgroundSchedulerProcessJobsWithinRedisLock
|
|
372
|
+
from funboost.timing_job.apscheduler_use_redis_store import FunboostBackgroundSchedulerProcessJobsWithinRedisLock
|
|
373
373
|
# print(self.consumer_params.delay_task_apsscheduler_jobstores_kind )
|
|
374
374
|
if self.consumer_params.delay_task_apscheduler_jobstores_kind == 'redis':
|
|
375
375
|
jobstores = {
|
|
@@ -392,7 +392,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
|
|
|
392
392
|
raise Exception(f'delay_task_apsscheduler_jobstores_kind is error: {self.consumer_params.delay_task_apscheduler_jobstores_kind}')
|
|
393
393
|
|
|
394
394
|
|
|
395
|
-
self._delay_task_scheduler.add_executor(ApschedulerThreadPoolExecutor(2)) # 只是运行submit任务到并发池,不需要很多线程。
|
|
395
|
+
# self._delay_task_scheduler.add_executor(ApschedulerThreadPoolExecutor(2)) # 只是运行submit任务到并发池,不需要很多线程。
|
|
396
396
|
# self._delay_task_scheduler.add_listener(self._apscheduler_job_miss, EVENT_JOB_MISSED)
|
|
397
397
|
self._delay_task_scheduler.start()
|
|
398
398
|
|
|
@@ -8,7 +8,9 @@ import importlib
|
|
|
8
8
|
import pickle
|
|
9
9
|
|
|
10
10
|
import time
|
|
11
|
-
from
|
|
11
|
+
from apscheduler.executors.pool import BasePoolExecutor
|
|
12
|
+
|
|
13
|
+
from funboost.utils.decorators import RedisDistributedLockContextManager,RedisDistributedBlockLockContextManager
|
|
12
14
|
from typing import Union
|
|
13
15
|
import threading
|
|
14
16
|
|
|
@@ -26,7 +28,8 @@ from funboost.consumers.base_consumer import AbstractConsumer
|
|
|
26
28
|
from funboost.core.booster import BoostersManager, Booster
|
|
27
29
|
from funboost.publishers.base_publisher import AbstractPublisher
|
|
28
30
|
from funboost import BoosterParams
|
|
29
|
-
|
|
31
|
+
from funboost.concurrent_pool.flexible_thread_pool import FlexibleThreadPool
|
|
32
|
+
from funboost.concurrent_pool.custom_threadpool_executor import ThreadPoolExecutorShrinkAble
|
|
30
33
|
|
|
31
34
|
@deprecated.deprecated(reason='以后不要再使用这种方式,对于job_store为数据库时候需要序列化不好。使用内存和数据库都兼容的添加任务方式: add_push_job')
|
|
32
35
|
def timing_publish_deco(consuming_func_decorated_or_consumer: Union[callable, AbstractConsumer]):
|
|
@@ -54,6 +57,20 @@ def push_fun_params_to_broker(queue_name: str, *args, runonce_uuid=None, **kwarg
|
|
|
54
57
|
else:
|
|
55
58
|
BoostersManager.get_or_create_booster_by_queue_name(queue_name).push(*args, **kwargs)
|
|
56
59
|
|
|
60
|
+
class ThreadPoolExecutorForAps(BasePoolExecutor):
|
|
61
|
+
"""
|
|
62
|
+
An executor that runs jobs in a concurrent.futures thread pool.
|
|
63
|
+
|
|
64
|
+
Plugin alias: ``threadpool``
|
|
65
|
+
|
|
66
|
+
:param max_workers: the maximum number of spawned threads.
|
|
67
|
+
:param pool_kwargs: dict of keyword arguments to pass to the underlying
|
|
68
|
+
ThreadPoolExecutor constructor
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
def __init__(self, max_workers=10, ):
|
|
72
|
+
pool = ThreadPoolExecutorShrinkAble(int(max_workers),)
|
|
73
|
+
super().__init__(pool)
|
|
57
74
|
|
|
58
75
|
class FunboostBackgroundScheduler(BackgroundScheduler):
|
|
59
76
|
"""
|
|
@@ -150,7 +167,7 @@ class FunboostBackgroundScheduler(BackgroundScheduler):
|
|
|
150
167
|
或者下一个需要运行的任务的wait_seconds是3600秒后,此时新加了一个动态任务需要3600秒后,
|
|
151
168
|
现在最多只需要1秒就能扫描到动态新增的定时任务了。
|
|
152
169
|
"""
|
|
153
|
-
MAX_WAIT_SECONDS_FOR_NEX_PROCESS_JOBS =
|
|
170
|
+
MAX_WAIT_SECONDS_FOR_NEX_PROCESS_JOBS = 0.5
|
|
154
171
|
wait_seconds = None
|
|
155
172
|
while self.state == STATE_RUNNING:
|
|
156
173
|
if wait_seconds is None:
|
|
@@ -163,24 +180,8 @@ class FunboostBackgroundScheduler(BackgroundScheduler):
|
|
|
163
180
|
time.sleep(self._last_wait_seconds) # 这个要取最小值,不然例如定时间隔0.1秒运行,不取最小值,不会每隔0.1秒运行。
|
|
164
181
|
wait_seconds = self._process_jobs()
|
|
165
182
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
process_jobs_redis_lock_key = f'funboost.BackgroundSchedulerProcessJobsWithinRedisLock'
|
|
169
|
-
|
|
170
|
-
def set_process_jobs_redis_lock_key(self,lock_key):
|
|
171
|
-
self.process_jobs_redis_lock_key = lock_key
|
|
172
|
-
|
|
173
|
-
def _process_jobs(self):
|
|
174
|
-
for i in range(10) :
|
|
175
|
-
with RedisDistributedLockContextManager(RedisMixin().redis_db_frame, self.process_jobs_redis_lock_key, ) as lock:
|
|
176
|
-
if lock.has_aquire_lock:
|
|
177
|
-
wait_seconds = super()._process_jobs()
|
|
178
|
-
return wait_seconds
|
|
179
|
-
else:
|
|
180
|
-
time.sleep(0.1)
|
|
181
|
-
return 0.1
|
|
182
|
-
|
|
183
|
-
|
|
183
|
+
def _create_default_executor(self):
|
|
184
|
+
return ThreadPoolExecutorForAps() # 必须是apscheduler pool的子类
|
|
184
185
|
|
|
185
186
|
|
|
186
187
|
FsdfBackgroundScheduler = FunboostBackgroundScheduler # 兼容一下名字,fsdf是 function-scheduling-distributed-framework 老框架名字的缩写
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
from apscheduler.jobstores.redis import RedisJobStore
|
|
2
|
+
from funboost.utils.redis_manager import RedisMixin
|
|
3
|
+
|
|
4
|
+
from funboost.timing_job import FunboostBackgroundScheduler
|
|
5
|
+
from funboost.funboost_config_deafult import BrokerConnConfig, FunboostCommonConfig
|
|
6
|
+
from funboost.utils.decorators import RedisDistributedBlockLockContextManager
|
|
7
|
+
|
|
8
|
+
"""
|
|
9
|
+
这个是使用redis作为定时任务持久化,支持跨机器好跨进程,外部远程 动态修改/添加/删除定时任务
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class FunboostBackgroundSchedulerProcessJobsWithinRedisLock(FunboostBackgroundScheduler):
|
|
14
|
+
"""
|
|
15
|
+
分布式或多进程都启动某个apscheduler实例,如果都使用的同一个数据库类型的jobstores ,_process_jobs有很大概率会造成报错, 因为_process_jobs使用的是线程锁,管不了其他进程和分布式机器。
|
|
16
|
+
|
|
17
|
+
https://groups.google.com/g/apscheduler/c/Gjc_JQMPePc 问题也提到了这个bug
|
|
18
|
+
|
|
19
|
+
继承 Custom schedulers https://apscheduler.readthedocs.io/en/3.x/extending.html 可以重写 _create_lock
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
process_jobs_redis_lock_key = f'funboost.BackgroundSchedulerProcessJobsWithinRedisLock'
|
|
23
|
+
|
|
24
|
+
def set_process_jobs_redis_lock_key(self, lock_key):
|
|
25
|
+
self.process_jobs_redis_lock_key = lock_key
|
|
26
|
+
|
|
27
|
+
# def _create_lock(self):
|
|
28
|
+
# return RedisDistributedBlockLockContextManager(RedisMixin().redis_db_frame,self.process_jobs_redis_lock_key,) 这个类的写法不适合固定的单例,
|
|
29
|
+
# RedisDistributedBlockLockContextManager的写法不适合 永远用一个 对象,所以还是放到 def _process_jobs 里面运行
|
|
30
|
+
|
|
31
|
+
# def _process_jobs(self):
|
|
32
|
+
# for i in range(10) :
|
|
33
|
+
# with RedisDistributedLockContextManager(RedisMixin().redis_db_frame, self.process_jobs_redis_lock_key, ) as lock:
|
|
34
|
+
# if lock.has_aquire_lock:
|
|
35
|
+
# wait_seconds = super()._process_jobs()
|
|
36
|
+
# return wait_seconds
|
|
37
|
+
# else:
|
|
38
|
+
# time.sleep(0.1)
|
|
39
|
+
# return 0.1
|
|
40
|
+
|
|
41
|
+
def _process_jobs(self):
|
|
42
|
+
with RedisDistributedBlockLockContextManager(RedisMixin().redis_db_frame, self.process_jobs_redis_lock_key, ):
|
|
43
|
+
return super()._process_jobs()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
jobstores = {
|
|
47
|
+
"default": RedisJobStore(db=BrokerConnConfig.REDIS_DB, host=BrokerConnConfig.REDIS_HOST,
|
|
48
|
+
port=BrokerConnConfig.REDIS_PORT, password=BrokerConnConfig.REDIS_PASSWORD,
|
|
49
|
+
username=BrokerConnConfig.REDIS_USERNAME, jobs_key='funboost.apscheduler.jobs')
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
funboost_background_scheduler_redis_store = FunboostBackgroundSchedulerProcessJobsWithinRedisLock(timezone=FunboostCommonConfig.TIMEZONE, daemon=False, jobstores=jobstores)
|
|
53
|
+
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
跨python解释器 跨机器动态修改定时任务配置的例子在
|
|
57
|
+
|
|
58
|
+
test_frame/test_apschedual/test_aps_redis_store.py
|
|
59
|
+
test_frame/test_apschedual/test_change_aps_conf.py
|
|
60
|
+
|
|
61
|
+
"""
|
|
@@ -361,6 +361,30 @@ class RedisDistributedLockContextManager(LoggerMixin, LoggerLevelSetterMixin):
|
|
|
361
361
|
return False
|
|
362
362
|
|
|
363
363
|
|
|
364
|
+
class RedisDistributedBlockLockContextManager(RedisDistributedLockContextManager):
|
|
365
|
+
def __init__(self, redis_client, redis_lock_key, expire_seconds=30, check_interval=0.1):
|
|
366
|
+
super().__init__(redis_client,redis_lock_key,expire_seconds)
|
|
367
|
+
self.check_interval = check_interval
|
|
368
|
+
# self.logger.setLevel(logging.DEBUG)
|
|
369
|
+
|
|
370
|
+
def __enter__(self):
|
|
371
|
+
while True:
|
|
372
|
+
self._line = sys._getframe().f_back.f_lineno # 调用此方法的代码的函数
|
|
373
|
+
self._file_name = sys._getframe(1).f_code.co_filename # 哪个文件调了用此方法
|
|
374
|
+
ret = self.redis_client.set(self.redis_lock_key, value=self.identifier, ex=self._expire_seconds, nx=True)
|
|
375
|
+
has_aquire_lock = False if ret is None else True
|
|
376
|
+
if has_aquire_lock:
|
|
377
|
+
log_msg = f'\n"{self._file_name}:{self._line}" 这行代码获得了redis锁 {self.redis_lock_key}'
|
|
378
|
+
else:
|
|
379
|
+
log_msg = f'\n"{self._file_name}:{self._line}" 这行代码此次没有获得redis锁 {self.redis_lock_key}'
|
|
380
|
+
# print(self.logger.level,log_msg)
|
|
381
|
+
self.logger.debug(log_msg)
|
|
382
|
+
if has_aquire_lock:
|
|
383
|
+
break
|
|
384
|
+
else:
|
|
385
|
+
time.sleep(self.check_interval)
|
|
386
|
+
|
|
387
|
+
|
|
364
388
|
"""
|
|
365
389
|
@contextmanager
|
|
366
390
|
def some_generator(<arguments>):
|
|
@@ -372,6 +396,9 @@ class RedisDistributedLockContextManager(LoggerMixin, LoggerLevelSetterMixin):
|
|
|
372
396
|
"""
|
|
373
397
|
|
|
374
398
|
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
375
402
|
class ExceptionContextManager:
|
|
376
403
|
"""
|
|
377
404
|
用上下文管理器捕获异常,可对代码片段进行错误捕捉,比装饰器更细腻
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: funboost
|
|
3
|
-
Version: 46.
|
|
3
|
+
Version: 46.8
|
|
4
4
|
Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持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,30 +0,0 @@
|
|
|
1
|
-
from apscheduler.jobstores.redis import RedisJobStore
|
|
2
|
-
|
|
3
|
-
from funboost.funboost_config_deafult import BrokerConnConfig,FunboostCommonConfig
|
|
4
|
-
|
|
5
|
-
from funboost.timing_job import FunboostBackgroundSchedulerProcessJobsWithinRedisLock
|
|
6
|
-
|
|
7
|
-
"""
|
|
8
|
-
这个是使用redis作为定时任务持久化,支持动态修改/添加/删除定时任务
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
jobstores = {
|
|
12
|
-
"default": RedisJobStore(db=BrokerConnConfig.REDIS_DB, host=BrokerConnConfig.REDIS_HOST,
|
|
13
|
-
port=BrokerConnConfig.REDIS_PORT, password=BrokerConnConfig.REDIS_PASSWORD,
|
|
14
|
-
username=BrokerConnConfig.REDIS_USERNAME,jobs_key='funboost.apscheduler.jobs')
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
funboost_background_scheduler_redis_store = FunboostBackgroundSchedulerProcessJobsWithinRedisLock(timezone=FunboostCommonConfig.TIMEZONE, daemon=False, jobstores=jobstores)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
跨python解释器 跨机器动态修改定时任务配置的例子在
|
|
26
|
-
|
|
27
|
-
test_frame/test_apschedual/test_aps_redis_store.py
|
|
28
|
-
test_frame/test_apschedual/test_change_aps_conf.py
|
|
29
|
-
|
|
30
|
-
"""
|
|
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-46.7 → funboost-46.8}/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-46.7 → funboost-46.8}/funboost/concurrent_pool/backup/async_pool_executor_janus.py
RENAMED
|
File without changes
|
|
File without changes
|
{funboost-46.7 → funboost-46.8}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funboost-46.7 → funboost-46.8}/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
|
|
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-46.7 → funboost-46.8}/funboost/factories/broker_kind__publsiher_consumer_type_map.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funboost-46.7 → funboost-46.8}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc
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
|