funboost 41.1__tar.gz → 41.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.

Files changed (273) hide show
  1. {funboost-41.1/funboost.egg-info → funboost-41.2}/PKG-INFO +1 -1
  2. {funboost-41.1 → funboost-41.2}/funboost/__init__.py +1 -1
  3. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/__init__.py +2 -1
  4. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/flexible_thread_pool.py +13 -3
  5. funboost-41.2/funboost/concurrent_pool/pool_commons.py +27 -0
  6. {funboost-41.1 → funboost-41.2}/funboost/consumers/base_consumer.py +15 -10
  7. {funboost-41.1 → funboost-41.2}/funboost/core/booster.py +4 -3
  8. {funboost-41.1 → funboost-41.2}/funboost/core/exceptions.py +1 -1
  9. {funboost-41.1 → funboost-41.2}/funboost/core/func_params_model.py +12 -7
  10. {funboost-41.1 → funboost-41.2}/funboost/core/function_result_status_saver.py +1 -0
  11. {funboost-41.1 → funboost-41.2}/funboost/core/msg_result_getter.py +2 -2
  12. {funboost-41.1 → funboost-41.2/funboost.egg-info}/PKG-INFO +1 -1
  13. {funboost-41.1 → funboost-41.2}/funboost.egg-info/SOURCES.txt +1 -0
  14. {funboost-41.1 → funboost-41.2}/LICENSE +0 -0
  15. {funboost-41.1 → funboost-41.2}/MANIFEST.in +0 -0
  16. {funboost-41.1 → funboost-41.2}/README.md +0 -0
  17. {funboost-41.1 → funboost-41.2}/funboost/__init__old.py +0 -0
  18. {funboost-41.1 → funboost-41.2}/funboost/__main__.py +0 -0
  19. {funboost-41.1 → funboost-41.2}/funboost/assist/__init__.py +0 -0
  20. {funboost-41.1 → funboost-41.2}/funboost/assist/celery_helper.py +0 -0
  21. {funboost-41.1 → funboost-41.2}/funboost/assist/dramatiq_helper.py +0 -0
  22. {funboost-41.1 → funboost-41.2}/funboost/assist/huey_helper.py +0 -0
  23. {funboost-41.1 → funboost-41.2}/funboost/assist/rocketry_helper.py +0 -0
  24. {funboost-41.1 → funboost-41.2}/funboost/assist/rq_helper.py +0 -0
  25. {funboost-41.1 → funboost-41.2}/funboost/assist/rq_windows_worker.py +0 -0
  26. {funboost-41.1 → funboost-41.2}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
  27. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/async_helper.py +0 -0
  28. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/async_pool_executor.py +0 -0
  29. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/backup/__init__.py +0 -0
  30. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
  31. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
  32. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
  33. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/base_pool_type.py +0 -0
  34. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
  35. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
  36. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
  37. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
  38. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
  39. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
  40. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
  41. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
  42. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
  43. {funboost-41.1 → funboost-41.2}/funboost/concurrent_pool/single_thread_executor.py +0 -0
  44. {funboost-41.1 → funboost-41.2}/funboost/constant.py +0 -0
  45. {funboost-41.1 → funboost-41.2}/funboost/consumers/__init__.py +0 -0
  46. {funboost-41.1 → funboost-41.2}/funboost/consumers/celery_consumer.py +0 -0
  47. {funboost-41.1 → funboost-41.2}/funboost/consumers/confirm_mixin.py +0 -0
  48. {funboost-41.1 → funboost-41.2}/funboost/consumers/dramatiq_consumer.py +0 -0
  49. {funboost-41.1 → funboost-41.2}/funboost/consumers/http_consumer.py +0 -0
  50. {funboost-41.1 → funboost-41.2}/funboost/consumers/http_consumer000.py +0 -0
  51. {funboost-41.1 → funboost-41.2}/funboost/consumers/httpsqs_consumer.py +0 -0
  52. {funboost-41.1 → funboost-41.2}/funboost/consumers/huey_consumer.py +0 -0
  53. {funboost-41.1 → funboost-41.2}/funboost/consumers/kafka_consumer.py +0 -0
  54. {funboost-41.1 → funboost-41.2}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
  55. {funboost-41.1 → funboost-41.2}/funboost/consumers/kombu_consumer.py +0 -0
  56. {funboost-41.1 → funboost-41.2}/funboost/consumers/local_python_queue_consumer.py +0 -0
  57. {funboost-41.1 → funboost-41.2}/funboost/consumers/memory_deque_consumer.py +0 -0
  58. {funboost-41.1 → funboost-41.2}/funboost/consumers/mongomq_consumer.py +0 -0
  59. {funboost-41.1 → funboost-41.2}/funboost/consumers/mqtt_consumer.py +0 -0
  60. {funboost-41.1 → funboost-41.2}/funboost/consumers/nameko_consumer.py +0 -0
  61. {funboost-41.1 → funboost-41.2}/funboost/consumers/nats_consumer.py +0 -0
  62. {funboost-41.1 → funboost-41.2}/funboost/consumers/nsq_consumer.py +0 -0
  63. {funboost-41.1 → funboost-41.2}/funboost/consumers/peewee_conusmer.py +0 -0
  64. {funboost-41.1 → funboost-41.2}/funboost/consumers/persist_queue_consumer.py +0 -0
  65. {funboost-41.1 → funboost-41.2}/funboost/consumers/pulsar_consumer.py +0 -0
  66. {funboost-41.1 → funboost-41.2}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
  67. {funboost-41.1 → funboost-41.2}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
  68. {funboost-41.1 → funboost-41.2}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
  69. {funboost-41.1 → funboost-41.2}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
  70. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
  71. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_consumer.py +0 -0
  72. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_consumer_ack_able.py +0 -0
  73. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_consumer_priority.py +0 -0
  74. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_consumer_simple.py +0 -0
  75. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_filter.py +0 -0
  76. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_pubsub_consumer.py +0 -0
  77. {funboost-41.1 → funboost-41.2}/funboost/consumers/redis_stream_consumer.py +0 -0
  78. {funboost-41.1 → funboost-41.2}/funboost/consumers/rocketmq_consumer.py +0 -0
  79. {funboost-41.1 → funboost-41.2}/funboost/consumers/rq_consumer.py +0 -0
  80. {funboost-41.1 → funboost-41.2}/funboost/consumers/sqlachemy_consumer.py +0 -0
  81. {funboost-41.1 → funboost-41.2}/funboost/consumers/tcp_consumer.py +0 -0
  82. {funboost-41.1 → funboost-41.2}/funboost/consumers/txt_file_consumer.py +0 -0
  83. {funboost-41.1 → funboost-41.2}/funboost/consumers/udp_consumer.py +0 -0
  84. {funboost-41.1 → funboost-41.2}/funboost/consumers/zeromq_consumer.py +0 -0
  85. {funboost-41.1 → funboost-41.2}/funboost/contrib/__init__.py +0 -0
  86. {funboost-41.1 → funboost-41.2}/funboost/contrib/api_publish_msg.py +0 -0
  87. {funboost-41.1 → funboost-41.2}/funboost/contrib/queue2queue.py +0 -0
  88. {funboost-41.1 → funboost-41.2}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
  89. {funboost-41.1 → funboost-41.2}/funboost/core/__init__.py +0 -0
  90. {funboost-41.1 → funboost-41.2}/funboost/core/active_cousumer_info_getter.py +0 -0
  91. {funboost-41.1 → funboost-41.2}/funboost/core/cli/__init__.py +0 -0
  92. {funboost-41.1 → funboost-41.2}/funboost/core/cli/discovery_boosters.py +0 -0
  93. {funboost-41.1 → funboost-41.2}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
  94. {funboost-41.1 → funboost-41.2}/funboost/core/cli/funboost_fire.py +0 -0
  95. {funboost-41.1 → funboost-41.2}/funboost/core/fabric_deploy_helper.py +0 -0
  96. {funboost-41.1 → funboost-41.2}/funboost/core/function_result_status_config.py +0 -0
  97. {funboost-41.1 → funboost-41.2}/funboost/core/helper_funs.py +0 -0
  98. {funboost-41.1 → funboost-41.2}/funboost/core/kill_remote_task.py +0 -0
  99. {funboost-41.1 → funboost-41.2}/funboost/core/loggers.py +0 -0
  100. {funboost-41.1 → funboost-41.2}/funboost/core/muliti_process_enhance.py +0 -0
  101. {funboost-41.1 → funboost-41.2}/funboost/core/show_funboost_flag.py +0 -0
  102. {funboost-41.1 → funboost-41.2}/funboost/factories/__init__.py +0 -0
  103. {funboost-41.1 → funboost-41.2}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
  104. {funboost-41.1 → funboost-41.2}/funboost/factories/consumer_factory.py +0 -0
  105. {funboost-41.1 → funboost-41.2}/funboost/factories/publisher_factotry.py +0 -0
  106. {funboost-41.1 → funboost-41.2}/funboost/funboost_config_deafult.py +0 -0
  107. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  108. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  109. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/app.py +0 -0
  110. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/functions.py +0 -0
  111. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/assets/css/custom.css +0 -0
  112. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
  113. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
  114. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/assets/js/custom.js +0 -0
  115. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
  116. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/css/style.css +0 -0
  117. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/images/bg.jpg +0 -0
  118. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/images/password.png +0 -0
  119. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/images/tick.png +0 -0
  120. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/images/user.png +0 -0
  121. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
  122. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/templates/index.html +0 -0
  123. {funboost-41.1 → funboost-41.2}/funboost/function_result_web/templates/login.html +0 -0
  124. {funboost-41.1 → funboost-41.2}/funboost/publishers/__init__.py +0 -0
  125. {funboost-41.1 → funboost-41.2}/funboost/publishers/base_publisher.py +0 -0
  126. {funboost-41.1 → funboost-41.2}/funboost/publishers/celery_publisher.py +0 -0
  127. {funboost-41.1 → funboost-41.2}/funboost/publishers/celery_publisher000.py +0 -0
  128. {funboost-41.1 → funboost-41.2}/funboost/publishers/confluent_kafka_publisher.py +0 -0
  129. {funboost-41.1 → funboost-41.2}/funboost/publishers/dramatiq_publisher.py +0 -0
  130. {funboost-41.1 → funboost-41.2}/funboost/publishers/http_publisher.py +0 -0
  131. {funboost-41.1 → funboost-41.2}/funboost/publishers/httpsqs_publisher.py +0 -0
  132. {funboost-41.1 → funboost-41.2}/funboost/publishers/huey_publisher.py +0 -0
  133. {funboost-41.1 → funboost-41.2}/funboost/publishers/kafka_publisher.py +0 -0
  134. {funboost-41.1 → funboost-41.2}/funboost/publishers/kombu_publisher.py +0 -0
  135. {funboost-41.1 → funboost-41.2}/funboost/publishers/local_python_queue_publisher.py +0 -0
  136. {funboost-41.1 → funboost-41.2}/funboost/publishers/meomory_deque_publisher.py +0 -0
  137. {funboost-41.1 → funboost-41.2}/funboost/publishers/mongomq_publisher.py +0 -0
  138. {funboost-41.1 → funboost-41.2}/funboost/publishers/mqtt_publisher.py +0 -0
  139. {funboost-41.1 → funboost-41.2}/funboost/publishers/nameko_publisher.py +0 -0
  140. {funboost-41.1 → funboost-41.2}/funboost/publishers/nats_publisher.py +0 -0
  141. {funboost-41.1 → funboost-41.2}/funboost/publishers/nsq_publisher.py +0 -0
  142. {funboost-41.1 → funboost-41.2}/funboost/publishers/peewee_publisher.py +0 -0
  143. {funboost-41.1 → funboost-41.2}/funboost/publishers/persist_queue_publisher.py +0 -0
  144. {funboost-41.1 → funboost-41.2}/funboost/publishers/pulsar_publisher.py +0 -0
  145. {funboost-41.1 → funboost-41.2}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
  146. {funboost-41.1 → funboost-41.2}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
  147. {funboost-41.1 → funboost-41.2}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
  148. {funboost-41.1 → funboost-41.2}/funboost/publishers/redis_publisher.py +0 -0
  149. {funboost-41.1 → funboost-41.2}/funboost/publishers/redis_publisher_lpush.py +0 -0
  150. {funboost-41.1 → funboost-41.2}/funboost/publishers/redis_publisher_priority.py +0 -0
  151. {funboost-41.1 → funboost-41.2}/funboost/publishers/redis_publisher_simple.py +0 -0
  152. {funboost-41.1 → funboost-41.2}/funboost/publishers/redis_pubsub_publisher.py +0 -0
  153. {funboost-41.1 → funboost-41.2}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
  154. {funboost-41.1 → funboost-41.2}/funboost/publishers/redis_stream_publisher.py +0 -0
  155. {funboost-41.1 → funboost-41.2}/funboost/publishers/rocketmq_publisher.py +0 -0
  156. {funboost-41.1 → funboost-41.2}/funboost/publishers/rq_publisher.py +0 -0
  157. {funboost-41.1 → funboost-41.2}/funboost/publishers/sqla_queue_publisher.py +0 -0
  158. {funboost-41.1 → funboost-41.2}/funboost/publishers/tcp_publisher.py +0 -0
  159. {funboost-41.1 → funboost-41.2}/funboost/publishers/txt_file_publisher.py +0 -0
  160. {funboost-41.1 → funboost-41.2}/funboost/publishers/udp_publisher.py +0 -0
  161. {funboost-41.1 → funboost-41.2}/funboost/publishers/zeromq_publisher.py +0 -0
  162. {funboost-41.1 → funboost-41.2}/funboost/queues/__init__.py +0 -0
  163. {funboost-41.1 → funboost-41.2}/funboost/queues/peewee_queue.py +0 -0
  164. {funboost-41.1 → funboost-41.2}/funboost/queues/sqla_queue.py +0 -0
  165. {funboost-41.1 → funboost-41.2}/funboost/set_frame_config.py +0 -0
  166. {funboost-41.1 → funboost-41.2}/funboost/timing_job/__init__.py +0 -0
  167. {funboost-41.1 → funboost-41.2}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
  168. {funboost-41.1 → funboost-41.2}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
  169. {funboost-41.1 → funboost-41.2}/funboost/utils/__init__.py +0 -0
  170. {funboost-41.1 → funboost-41.2}/funboost/utils/apscheduler_monkey.py +0 -0
  171. {funboost-41.1 → funboost-41.2}/funboost/utils/block_exit.py +0 -0
  172. {funboost-41.1 → funboost-41.2}/funboost/utils/bulk_operation.py +0 -0
  173. {funboost-41.1 → funboost-41.2}/funboost/utils/ctrl_c_end.py +0 -0
  174. {funboost-41.1 → funboost-41.2}/funboost/utils/custom_pysnooper.py +0 -0
  175. {funboost-41.1 → funboost-41.2}/funboost/utils/decorators.py +0 -0
  176. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages/__init__.py +0 -0
  177. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
  178. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
  179. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
  180. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
  181. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
  182. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
  183. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
  184. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
  185. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
  186. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
  187. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
  188. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
  189. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
  190. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
  191. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
  192. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
  193. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
  194. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
  195. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
  196. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
  197. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
  198. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
  199. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
  200. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
  201. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
  202. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
  203. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
  204. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
  205. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
  206. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
  207. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
  208. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
  209. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
  210. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
  211. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
  212. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
  213. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
  214. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
  215. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
  216. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
  217. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
  218. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
  219. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
  220. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
  221. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
  222. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
  223. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
  224. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
  225. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
  226. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
  227. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
  228. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
  229. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
  230. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
  231. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
  232. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
  233. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
  234. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
  235. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
  236. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
  237. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
  238. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
  239. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
  240. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
  241. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
  242. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
  243. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
  244. {funboost-41.1 → funboost-41.2}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
  245. {funboost-41.1 → funboost-41.2}/funboost/utils/develop_log.py +0 -0
  246. {funboost-41.1 → funboost-41.2}/funboost/utils/expire_lock.py +0 -0
  247. {funboost-41.1 → funboost-41.2}/funboost/utils/json_helper.py +0 -0
  248. {funboost-41.1 → funboost-41.2}/funboost/utils/mongo_util.py +0 -0
  249. {funboost-41.1 → funboost-41.2}/funboost/utils/monkey_color_log.py +0 -0
  250. {funboost-41.1 → funboost-41.2}/funboost/utils/monkey_patches.py +0 -0
  251. {funboost-41.1 → funboost-41.2}/funboost/utils/mqtt_util.py +0 -0
  252. {funboost-41.1 → funboost-41.2}/funboost/utils/paramiko_util.py +0 -0
  253. {funboost-41.1 → funboost-41.2}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
  254. {funboost-41.1 → funboost-41.2}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
  255. {funboost-41.1 → funboost-41.2}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
  256. {funboost-41.1 → funboost-41.2}/funboost/utils/pysnooper_ydf/utils.py +0 -0
  257. {funboost-41.1 → funboost-41.2}/funboost/utils/pysnooper_ydf/variables.py +0 -0
  258. {funboost-41.1 → funboost-41.2}/funboost/utils/rabbitmq_factory.py +0 -0
  259. {funboost-41.1 → funboost-41.2}/funboost/utils/redis_manager.py +0 -0
  260. {funboost-41.1 → funboost-41.2}/funboost/utils/redis_manager_old.py +0 -0
  261. {funboost-41.1 → funboost-41.2}/funboost/utils/resource_monitoring.py +0 -0
  262. {funboost-41.1 → funboost-41.2}/funboost/utils/restart_python.py +0 -0
  263. {funboost-41.1 → funboost-41.2}/funboost/utils/simple_data_class.py +0 -0
  264. {funboost-41.1 → funboost-41.2}/funboost/utils/time_util.py +0 -0
  265. {funboost-41.1 → funboost-41.2}/funboost/utils/times/__init__.py +0 -0
  266. {funboost-41.1 → funboost-41.2}/funboost/utils/times/version.py +0 -0
  267. {funboost-41.1 → funboost-41.2}/funboost/utils/un_strict_json_dumps.py +0 -0
  268. {funboost-41.1 → funboost-41.2}/funboost.egg-info/dependency_links.txt +0 -0
  269. {funboost-41.1 → funboost-41.2}/funboost.egg-info/entry_points.txt +0 -0
  270. {funboost-41.1 → funboost-41.2}/funboost.egg-info/requires.txt +0 -0
  271. {funboost-41.1 → funboost-41.2}/funboost.egg-info/top_level.txt +0 -0
  272. {funboost-41.1 → funboost-41.2}/setup.cfg +0 -0
  273. {funboost-41.1 → funboost-41.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 41.1
3
+ Version: 41.2
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持celery框架整体作为funboost中间件,python函数加速器,框架包罗万象,一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 方便 快速 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
13
13
  这段注释说明和使用的用户无关,只和框架开发人员有关.
14
14
  '''
15
15
 
16
- __version__ = "41.1"
16
+ __version__ = "41.2"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -16,4 +16,5 @@ from .async_pool_executor import AsyncPoolExecutor
16
16
  # from .custom_gevent_pool_executor import GeventPoolExecutor
17
17
  from .bounded_threadpoolexcutor import BoundedThreadPoolExecutor
18
18
  from .custom_threadpool_executor import CustomThreadPoolExecutor
19
- from .flexible_thread_pool import FlexibleThreadPool
19
+ from .flexible_thread_pool import FlexibleThreadPool
20
+ from .pool_commons import ConcurrentPoolBuilder
@@ -10,14 +10,16 @@
10
10
 
11
11
  import asyncio
12
12
  import inspect
13
+ import os
13
14
  import queue
14
15
  import threading
15
16
  from functools import wraps
16
17
 
17
18
  from funboost.concurrent_pool import FunboostBaseConcurrentPool
18
- from funboost.core.loggers import FunboostFileLoggerMixin,LoggerLevelSetterMixin,FunboostMetaTypeFileLogger
19
+ from funboost.core.loggers import FunboostFileLoggerMixin, LoggerLevelSetterMixin, FunboostMetaTypeFileLogger
19
20
 
20
- class FlexibleThreadPool(FunboostFileLoggerMixin, LoggerLevelSetterMixin,FunboostBaseConcurrentPool):
21
+
22
+ class FlexibleThreadPool(FunboostFileLoggerMixin, LoggerLevelSetterMixin, FunboostBaseConcurrentPool):
21
23
  KEEP_ALIVE_TIME = 10
22
24
  MIN_WORKERS = 2
23
25
 
@@ -51,6 +53,7 @@ class FlexibleThreadPool(FunboostFileLoggerMixin, LoggerLevelSetterMixin,Funboos
51
53
  class FlexibleThreadPoolMinWorkers0(FlexibleThreadPool):
52
54
  MIN_WORKERS = 0
53
55
 
56
+
54
57
  def run_sync_or_async_fun000(func, *args, **kwargs):
55
58
  """这种方式造成电脑很卡,不行"""
56
59
  fun_is_asyncio = inspect.iscoroutinefunction(func)
@@ -63,12 +66,16 @@ def run_sync_or_async_fun000(func, *args, **kwargs):
63
66
  else:
64
67
  return func(*args, **kwargs)
65
68
 
69
+
66
70
  tl = threading.local()
71
+
72
+
67
73
  def _get_thread_local_loop() -> asyncio.AbstractEventLoop:
68
- if not hasattr(tl,'asyncio_loop'):
74
+ if not hasattr(tl, 'asyncio_loop'):
69
75
  tl.asyncio_loop = asyncio.new_event_loop()
70
76
  return tl.asyncio_loop
71
77
 
78
+
72
79
  def run_sync_or_async_fun(func, *args, **kwargs):
73
80
  fun_is_asyncio = inspect.iscoroutinefunction(func)
74
81
  if fun_is_asyncio:
@@ -122,6 +129,9 @@ class _KeepAliveTimeThread(threading.Thread, metaclass=FunboostMetaTypeFileLogge
122
129
  self.pool._change_threads_free_count(1)
123
130
 
124
131
 
132
+
133
+
134
+
125
135
  if __name__ == '__main__':
126
136
  import time
127
137
  from concurrent.futures import ThreadPoolExecutor
@@ -0,0 +1,27 @@
1
+ import functools
2
+ import threading
3
+ import typing
4
+ import os
5
+
6
+ from funboost.concurrent_pool.flexible_thread_pool import FlexibleThreadPool
7
+ from funboost.concurrent_pool.base_pool_type import FunboostBaseConcurrentPool
8
+
9
+
10
+ class ConcurrentPoolBuilder:
11
+ _pid__pool_map = {}
12
+ _lock = threading.Lock()
13
+
14
+ @classmethod
15
+ def get_pool(cls, pool_type: typing.Type[FunboostBaseConcurrentPool], max_workers: int = None):
16
+ key = (os.getpid(), pool_type)
17
+ with cls._lock:
18
+ if key not in cls._pid__pool_map:
19
+ pool = pool_type(max_workers) # noqa
20
+ cls._pid__pool_map[key] = pool
21
+ return cls._pid__pool_map[key]
22
+
23
+
24
+ if __name__ == '__main__':
25
+ for i in range(10):
26
+ pool = functools.partial(ConcurrentPoolBuilder.get_pool, FlexibleThreadPool, 200)()
27
+ print(id(pool))
@@ -74,6 +74,7 @@ class GlobalVars:
74
74
  global_concurrent_mode = None
75
75
  has_start_a_consumer_flag = False
76
76
 
77
+
77
78
  # noinspection DuplicatedCode
78
79
  class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
79
80
  time_interval_for_check_do_not_run_time = 60
@@ -108,7 +109,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
108
109
  :return:
109
110
  """
110
111
  # ConsumersManager.join_all_consumer_shedual_task_thread()
111
- if GlobalVars.has_start_a_consumer_flag :
112
+ if GlobalVars.has_start_a_consumer_flag:
112
113
  while 1:
113
114
  time.sleep(10)
114
115
 
@@ -134,7 +135,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
134
135
  self._concurrent_mode_dispatcher = ConcurrentModeDispatcher(self)
135
136
  if consumer_params.concurrent_mode == ConcurrentModeEnum.ASYNC:
136
137
  self._run = self._async_run # 这里做了自动转化,使用async_run代替run
137
- self.logger:logging.Logger
138
+ self.logger: logging.Logger
138
139
  self._build_logger()
139
140
  # stdout_write(f'''{time.strftime("%H:%M:%S")} "{self.consumer_params.auto_generate_info['where_to_instantiate']}" \033[0;37;44m此行 实例化队列名 {self.queue_name} 的消费者, 类型为 {self.__class__}\033[0m\n''')
140
141
  print(f'''\033[0m
@@ -185,6 +186,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
185
186
 
186
187
  self.consumer_identification = f'{nb_log_config_default.computer_name}_{nb_log_config_default.computer_ip}_' \
187
188
  f'{time_util.DatetimeConverter().datetime_str.replace(":", "-")}_{os.getpid()}_{id(self)}'
189
+ # noinspection PyUnresolvedReferences
188
190
  self.consumer_identification_map = {'queue_name': self.queue_name,
189
191
  'computer_name': nb_log_config_default.computer_name,
190
192
  'computer_ip': nb_log_config_default.computer_ip,
@@ -222,10 +224,11 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
222
224
  logger_name = f'funboost.{logger_prefix}{self.__class__.__name__}--{self.queue_name}'
223
225
  log_filename = self.consumer_params.log_filename or f'funboost.{self.queue_name}.log'
224
226
  self.logger = get_logger(logger_name,
225
- log_level_int=self.consumer_params.log_level,
227
+ log_level_int=self.consumer_params.log_level,
226
228
  log_filename=log_filename if self.consumer_params.create_logger_file else None,
227
- error_log_filename= nb_log.generate_error_file_name(log_filename),
228
- formatter_template=FunboostCommonConfig.NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER, )
229
+ error_log_filename=nb_log.generate_error_file_name(log_filename),
230
+ formatter_template=FunboostCommonConfig.NB_LOG_FORMATER_INDEX_FOR_CONSUMER_AND_PUBLISHER, )
231
+ self.logger.info(f'队列 {self.queue_name} 的日志写入到 {nb_log_config_default.LOG_PATH} 文件夹的 {log_filename} 和 {nb_log.generate_error_file_name(log_filename)} 文件中')
229
232
 
230
233
  def _check_broker_exclusive_config(self):
231
234
  broker_exclusive_config_keys = self.consumer_params.broker_exclusive_config.keys()
@@ -305,7 +308,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
305
308
  # ConsumersManager.show_all_consumer_info()
306
309
  # noinspection PyBroadException
307
310
 
308
- GlobalVars.has_start_a_consumer_flag =True
311
+ GlobalVars.has_start_a_consumer_flag = True
309
312
  try:
310
313
  self._concurrent_mode_dispatcher.check_all_concurrent_mode()
311
314
  self._check_monkey_patch()
@@ -546,9 +549,10 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
546
549
  with RedisMixin().redis_db_filter_and_rpc_result.pipeline() as p:
547
550
  # RedisMixin().redis_db_frame.lpush(kw['body']['extra']['task_id'], json.dumps(function_result_status.get_status_dict(without_datetime_obj=True)))
548
551
  # RedisMixin().redis_db_frame.expire(kw['body']['extra']['task_id'], 600)
552
+ current_function_result_status.rpc_result_expire_seconds = self.consumer_params.rpc_result_expire_seconds
549
553
  p.lpush(kw['body']['extra']['task_id'],
550
554
  json.dumps(current_function_result_status.get_status_dict(without_datetime_obj=True)))
551
- p.expire(kw['body']['extra']['task_id'], 600)
555
+ p.expire(kw['body']['extra']['task_id'], self.consumer_params.rpc_result_expire_seconds)
552
556
  p.execute()
553
557
 
554
558
  with self._lock_for_count_execute_task_times_every_unit_time:
@@ -695,9 +699,10 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
695
699
  if self._get_priority_conf(kw, 'is_using_rpc_mode'):
696
700
  def push_result():
697
701
  with RedisMixin().redis_db_filter_and_rpc_result.pipeline() as p:
702
+ current_function_result_status.rpc_result_expire_seconds = self.consumer_params.rpc_result_expire_seconds
698
703
  p.lpush(kw['body']['extra']['task_id'],
699
704
  json.dumps(current_function_result_status.get_status_dict(without_datetime_obj=True)))
700
- p.expire(kw['body']['extra']['task_id'], 600)
705
+ p.expire(kw['body']['extra']['task_id'], self.consumer_params.rpc_result_expire_seconds)
701
706
  p.execute()
702
707
 
703
708
  if (current_function_result_status.success is False and current_retry_times == max_retry_times) or current_function_result_status.success is True:
@@ -911,8 +916,8 @@ class ConcurrentModeDispatcher(FunboostFileLoggerMixin):
911
916
  self.consumer.consumer_params.concurrent_mode != GlobalVars.global_concurrent_mode:
912
917
  # print({self.consumer._concurrent_mode, ConsumersManager.global_concurrent_mode})
913
918
  if not {self.consumer.consumer_params.concurrent_mode, GlobalVars.global_concurrent_mode}.issubset({ConcurrentModeEnum.THREADING,
914
- ConcurrentModeEnum.ASYNC,
915
- ConcurrentModeEnum.SINGLE_THREAD}):
919
+ ConcurrentModeEnum.ASYNC,
920
+ ConcurrentModeEnum.SINGLE_THREAD}):
916
921
  # threding、asyncio、solo 这几种模式可以共存。但同一个解释器不能同时选择 gevent + 其它并发模式,也不能 eventlet + 其它并发模式。
917
922
  raise ValueError('''由于猴子补丁的原因,同一解释器中不可以设置两种并发类型,请查看显示的所有消费者的信息,
918
923
  搜索 concurrent_mode 关键字,确保当前解释器内的所有消费者的并发模式只有一种(或可以共存),
@@ -12,7 +12,8 @@ from funboost.core.exceptions import BoostDecoParamsIsOldVersion
12
12
  from funboost.core.func_params_model import BoosterParams, FunctionResultStatusPersistanceConfig, PriorityConsumingControlConfig
13
13
 
14
14
  from funboost.factories.consumer_factory import get_consumer
15
-
15
+ if typing.TYPE_CHECKING:
16
+ from funboost.core.msg_result_getter import AsyncResult
16
17
 
17
18
  class Booster:
18
19
  """
@@ -107,13 +108,13 @@ class Booster:
107
108
  else:
108
109
  return self.consuming_function(*args, **kwargs)
109
110
 
110
- def _safe_push(self, *func_args, **func_kwargs):
111
+ def _safe_push(self, *func_args, **func_kwargs) -> AsyncResult:
111
112
  """ 多进程安全的,在fork多进程(非spawn多进程)情况下,有的包多进程不能共用一个连接,例如kafka"""
112
113
  consumer = BoostersManager.get_or_create_booster_by_queue_name(self.queue_name).consumer
113
114
  return consumer.publisher_of_same_queue.push(*func_args, **func_kwargs)
114
115
 
115
116
  def _safe_publish(self, msg: typing.Union[str, dict], task_id=None,
116
- priority_control_config: PriorityConsumingControlConfig = None):
117
+ priority_control_config: PriorityConsumingControlConfig = None) -> AsyncResult:
117
118
  """ 多进程安全的,在fork多进程(非spawn多进程)情况下,很多包跨线程/进程不能共享中间件连接,"""
118
119
  consumer = BoostersManager.get_or_create_booster_by_queue_name(self.queue_name).consumer
119
120
  return consumer.publisher_of_same_queue.publish(msg=msg, task_id=task_id, priority_control_config=priority_control_config)
@@ -21,7 +21,7 @@ def f(x):
21
21
 
22
22
 
23
23
  用户需要做的改变如下:
24
- @boost(boost_paams=BoosterParams(queue_name='queue_name_xx',qps=3))
24
+ @boost(BoosterParams(queue_name='queue_name_xx',qps=3))
25
25
  def f(x):
26
26
  pass
27
27
 
@@ -1,13 +1,14 @@
1
1
  import asyncio
2
2
  import datetime
3
+ import functools
3
4
  import json
4
5
  import logging
5
6
  import typing
6
7
  from collections import OrderedDict
7
8
 
8
- from funboost.concurrent_pool import FunboostBaseConcurrentPool
9
+ from funboost.concurrent_pool import FunboostBaseConcurrentPool, FlexibleThreadPool, ConcurrentPoolBuilder
9
10
  from funboost.constant import ConcurrentModeEnum, BrokerEnum
10
- from pydantic import BaseModel, validator, root_validator, BaseConfig
11
+ from pydantic import BaseModel, validator, root_validator, BaseConfig, Field
11
12
 
12
13
  # noinspection PyUnresolvedReferences
13
14
  from funboost.core.loggers import develop_logger
@@ -158,6 +159,7 @@ class BoosterParams(BaseJsonAbleModel):
158
159
  user_custom_record_process_info_func: typing.Callable = None # 提供一个用户自定义的保存消息处理记录到某个地方例如mysql数据库的函数,函数仅仅接受一个入参,入参类型是 FunctionResultStatus,用户可以打印参数
159
160
 
160
161
  is_using_rpc_mode: bool = False # 是否使用rpc模式,可以在发布端获取消费端的结果回调,但消耗一定性能,使用async_result.result时候会等待阻塞住当前线程。
162
+ rpc_result_expire_seconds: int = 600 # 保存rpc结果的过期时间.
161
163
 
162
164
  is_support_remote_kill_task: bool = False # 是否支持远程任务杀死功能,如果任务数量少,单个任务耗时长,确实需要远程发送命令来杀死正在运行的函数,才设置为true,否则不建议开启此功能。
163
165
 
@@ -199,19 +201,22 @@ class BoosterParams(BaseJsonAbleModel):
199
201
 
200
202
  class BoosterParamsComplete(BoosterParams):
201
203
  """
202
- 例如一个子类,这个子类可以作为@booot的传参,每个@boost可以少写一些这些重复的入参字段.
204
+ 例如一个子类,这个BoosterParams的子类可以作为@booot的传参,每个@boost可以少写一些这些重复的入参字段.
203
205
 
204
- 支持函数消费状态 结果状态持久化
205
- 支持发送消费者的心跳到redis,便于统计分布式环境的活跃消费者
206
- 支持rpc模式
207
- 永远是使用 amqpstorm包 操作 rabbbitmq作为消息队列.
206
+ function_result_status_persistance_conf 永远支持函数消费状态 结果状态持久化
207
+ is_send_consumer_hearbeat_to_redis 永远支持发送消费者的心跳到redis,便于统计分布式环境的活跃消费者
208
+ is_using_rpc_mode 永远支持rpc模式
209
+ broker_kind 永远是使用 amqpstorm包 操作 rabbbitmq作为消息队列.
210
+ specify_concurrent_pool 同一个进程的不同booster函数,共用一个线程池,线程资源利用更高.
208
211
  """
209
212
 
210
213
  function_result_status_persistance_conf: FunctionResultStatusPersistanceConfig = FunctionResultStatusPersistanceConfig(
211
214
  is_save_result=True, is_save_status=True, expire_seconds=7 * 24 * 3600, is_use_bulk_insert=True) # 开启函数消费状态 结果持久化到 mongo,为True用户必须要安装mongo和多浪费一丝丝性能.
212
215
  is_send_consumer_hearbeat_to_redis: bool = True # 消费者心跳发到redis,为True那么用户必须安装reids
213
216
  is_using_rpc_mode: bool = True # 固定支持rpc模式,不用每次指定 (不需要使用rpc模式的同学,就不要指定为True,必须安装redis和浪费一点性能)
217
+ rpc_result_expire_seconds: int = 1000
214
218
  broker_kind: str = BrokerEnum.RABBITMQ_AMQPSTORM # 固定使用rabbitmq,不用每次指定
219
+ specify_concurrent_pool: FunboostBaseConcurrentPool = Field(default_factory=functools.partial(ConcurrentPoolBuilder.get_pool, FlexibleThreadPool, 500)) # 多个消费函数共享线程池
215
220
 
216
221
 
217
222
  class PriorityConsumingControlConfig(BaseJsonAbleModel):
@@ -55,6 +55,7 @@ class FunctionResultStatus():
55
55
  self._has_requeue = False
56
56
  self._has_to_dlx_queue = False
57
57
  self._has_kill_task = False
58
+ self.rpc_result_expire_seconds = None
58
59
 
59
60
  def get_status_dict(self, without_datetime_obj=False):
60
61
  self.time_end = time.time()
@@ -44,7 +44,7 @@ class AsyncResult(RedisMixin):
44
44
  status_and_result_str = redis_value[1]
45
45
  self._status_and_result = json.loads(status_and_result_str)
46
46
  self.redis_db_filter_and_rpc_result.lpush(self.task_id, status_and_result_str)
47
- self.redis_db_filter_and_rpc_result.expire(self.task_id, 600)
47
+ self.redis_db_filter_and_rpc_result.expire(self.task_id, self._status_and_result['rpc_result_expire_seconds'])
48
48
  return self._status_and_result
49
49
  return None
50
50
  return self._status_and_result
@@ -149,7 +149,7 @@ if __name__ == '__main__':
149
149
  status_and_result_str = redis_value[1]
150
150
  self._status_and_result = json.loads(status_and_result_str)
151
151
  await self.aioredis_db_filter_and_rpc_result.lpush(self.task_id, status_and_result_str)
152
- await self.aioredis_db_filter_and_rpc_result.expire(self.task_id, 600)
152
+ await self.aioredis_db_filter_and_rpc_result.expire(self.task_id, self._status_and_result['rpc_result_expire_seconds'])
153
153
  return self._status_and_result
154
154
  return None
155
155
  return self._status_and_result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 41.1
3
+ Version: 41.2
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持celery框架整体作为funboost中间件,python函数加速器,框架包罗万象,一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 方便 快速 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -36,6 +36,7 @@ funboost/concurrent_pool/custom_threadpool_executor.py
36
36
  funboost/concurrent_pool/custom_threadpool_executor000.py
37
37
  funboost/concurrent_pool/fixed_thread_pool.py
38
38
  funboost/concurrent_pool/flexible_thread_pool.py
39
+ funboost/concurrent_pool/pool_commons.py
39
40
  funboost/concurrent_pool/single_thread_executor.py
40
41
  funboost/concurrent_pool/backup/__init__.py
41
42
  funboost/concurrent_pool/backup/async_pool_executor0223.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes