funboost 44.2__tar.gz → 44.4__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 (280) hide show
  1. {funboost-44.2/funboost.egg-info → funboost-44.4}/PKG-INFO +4 -3
  2. {funboost-44.2 → funboost-44.4}/README.md +3 -2
  3. {funboost-44.2 → funboost-44.4}/funboost/__init__.py +1 -1
  4. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/async_helper.py +3 -1
  5. {funboost-44.2 → funboost-44.4}/funboost/consumers/base_consumer.py +30 -23
  6. {funboost-44.2 → funboost-44.4}/funboost/consumers/http_consumer.py +1 -1
  7. {funboost-44.2 → funboost-44.4}/funboost/consumers/http_consumer000.py +1 -2
  8. {funboost-44.2 → funboost-44.4}/funboost/consumers/httpsqs_consumer.py +1 -1
  9. {funboost-44.2 → funboost-44.4}/funboost/consumers/kafka_consumer.py +1 -1
  10. {funboost-44.2 → funboost-44.4}/funboost/consumers/kafka_consumer_manually_commit.py +2 -2
  11. {funboost-44.2 → funboost-44.4}/funboost/consumers/kombu_consumer.py +0 -1
  12. {funboost-44.2 → funboost-44.4}/funboost/consumers/local_python_queue_consumer.py +2 -3
  13. {funboost-44.2 → funboost-44.4}/funboost/consumers/memory_deque_consumer.py +0 -3
  14. {funboost-44.2 → funboost-44.4}/funboost/consumers/mongomq_consumer.py +0 -1
  15. {funboost-44.2 → funboost-44.4}/funboost/consumers/mqtt_consumer.py +1 -1
  16. {funboost-44.2 → funboost-44.4}/funboost/consumers/nats_consumer.py +1 -1
  17. {funboost-44.2 → funboost-44.4}/funboost/consumers/nsq_consumer.py +1 -2
  18. {funboost-44.2 → funboost-44.4}/funboost/consumers/peewee_conusmer.py +1 -2
  19. {funboost-44.2 → funboost-44.4}/funboost/consumers/persist_queue_consumer.py +1 -2
  20. {funboost-44.2 → funboost-44.4}/funboost/consumers/pulsar_consumer.py +1 -2
  21. {funboost-44.2 → funboost-44.4}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -2
  22. {funboost-44.2 → funboost-44.4}/funboost/consumers/rabbitmq_pika_consumer.py +0 -2
  23. {funboost-44.2 → funboost-44.4}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -1
  24. {funboost-44.2 → funboost-44.4}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +1 -2
  25. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_brpoplpush_consumer.py +1 -3
  26. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_consumer.py +4 -8
  27. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_consumer_ack_able.py +5 -10
  28. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_consumer_priority.py +3 -7
  29. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_consumer_simple.py +2 -3
  30. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_pubsub_consumer.py +3 -3
  31. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_stream_consumer.py +3 -3
  32. {funboost-44.2 → funboost-44.4}/funboost/consumers/rocketmq_consumer.py +2 -2
  33. {funboost-44.2 → funboost-44.4}/funboost/consumers/sqlachemy_consumer.py +1 -1
  34. {funboost-44.2 → funboost-44.4}/funboost/consumers/tcp_consumer.py +2 -2
  35. {funboost-44.2 → funboost-44.4}/funboost/consumers/txt_file_consumer.py +2 -2
  36. {funboost-44.2 → funboost-44.4}/funboost/consumers/udp_consumer.py +2 -2
  37. {funboost-44.2 → funboost-44.4}/funboost/consumers/zeromq_consumer.py +1 -2
  38. {funboost-44.2 → funboost-44.4}/funboost/core/booster.py +17 -2
  39. {funboost-44.2 → funboost-44.4}/funboost/core/cli/discovery_boosters.py +2 -2
  40. funboost-44.4/funboost/core/funboost_time.py +45 -0
  41. {funboost-44.2 → funboost-44.4}/funboost/core/helper_funs.py +16 -2
  42. {funboost-44.2 → funboost-44.4}/funboost/core/lazy_impoter.py +30 -37
  43. {funboost-44.2 → funboost-44.4}/funboost/core/loggers.py +3 -3
  44. {funboost-44.2 → funboost-44.4}/funboost/core/muliti_process_enhance.py +3 -3
  45. {funboost-44.2 → funboost-44.4}/funboost/funboost_config_deafult.py +1 -1
  46. {funboost-44.2 → funboost-44.4}/funboost/utils/decorators.py +14 -0
  47. {funboost-44.2 → funboost-44.4}/funboost/utils/paramiko_util.py +1 -1
  48. {funboost-44.2 → funboost-44.4/funboost.egg-info}/PKG-INFO +4 -3
  49. {funboost-44.2 → funboost-44.4}/funboost.egg-info/requires.txt +5 -0
  50. {funboost-44.2 → funboost-44.4}/setup.py +4 -2
  51. funboost-44.2/funboost/core/funboost_time.py +0 -28
  52. {funboost-44.2 → funboost-44.4}/LICENSE +0 -0
  53. {funboost-44.2 → funboost-44.4}/MANIFEST.in +0 -0
  54. {funboost-44.2 → funboost-44.4}/funboost/__init__old.py +0 -0
  55. {funboost-44.2 → funboost-44.4}/funboost/__main__.py +0 -0
  56. {funboost-44.2 → funboost-44.4}/funboost/assist/__init__.py +0 -0
  57. {funboost-44.2 → funboost-44.4}/funboost/assist/celery_helper.py +0 -0
  58. {funboost-44.2 → funboost-44.4}/funboost/assist/dramatiq_helper.py +0 -0
  59. {funboost-44.2 → funboost-44.4}/funboost/assist/huey_helper.py +0 -0
  60. {funboost-44.2 → funboost-44.4}/funboost/assist/rocketry_helper.py +0 -0
  61. {funboost-44.2 → funboost-44.4}/funboost/assist/rq_helper.py +0 -0
  62. {funboost-44.2 → funboost-44.4}/funboost/assist/rq_windows_worker.py +0 -0
  63. {funboost-44.2 → funboost-44.4}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
  64. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/__init__.py +0 -0
  65. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/async_pool_executor.py +0 -0
  66. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/backup/__init__.py +0 -0
  67. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
  68. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
  69. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
  70. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/base_pool_type.py +0 -0
  71. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
  72. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
  73. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
  74. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
  75. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
  76. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
  77. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
  78. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
  79. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
  80. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
  81. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/pool_commons.py +0 -0
  82. {funboost-44.2 → funboost-44.4}/funboost/concurrent_pool/single_thread_executor.py +0 -0
  83. {funboost-44.2 → funboost-44.4}/funboost/constant.py +0 -0
  84. {funboost-44.2 → funboost-44.4}/funboost/consumers/__init__.py +0 -0
  85. {funboost-44.2 → funboost-44.4}/funboost/consumers/celery_consumer.py +0 -0
  86. {funboost-44.2 → funboost-44.4}/funboost/consumers/confirm_mixin.py +0 -0
  87. {funboost-44.2 → funboost-44.4}/funboost/consumers/dramatiq_consumer.py +0 -0
  88. {funboost-44.2 → funboost-44.4}/funboost/consumers/huey_consumer.py +0 -0
  89. {funboost-44.2 → funboost-44.4}/funboost/consumers/nameko_consumer.py +0 -0
  90. {funboost-44.2 → funboost-44.4}/funboost/consumers/redis_filter.py +0 -0
  91. {funboost-44.2 → funboost-44.4}/funboost/consumers/rq_consumer.py +0 -0
  92. {funboost-44.2 → funboost-44.4}/funboost/contrib/__init__.py +0 -0
  93. {funboost-44.2 → funboost-44.4}/funboost/contrib/api_publish_msg.py +0 -0
  94. {funboost-44.2 → funboost-44.4}/funboost/contrib/django_db_deco.py +0 -0
  95. {funboost-44.2 → funboost-44.4}/funboost/contrib/queue2queue.py +0 -0
  96. {funboost-44.2 → funboost-44.4}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
  97. {funboost-44.2 → funboost-44.4}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
  98. {funboost-44.2 → funboost-44.4}/funboost/core/__init__.py +0 -0
  99. {funboost-44.2 → funboost-44.4}/funboost/core/active_cousumer_info_getter.py +0 -0
  100. {funboost-44.2 → funboost-44.4}/funboost/core/cli/__init__.py +0 -0
  101. {funboost-44.2 → funboost-44.4}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
  102. {funboost-44.2 → funboost-44.4}/funboost/core/cli/funboost_fire.py +0 -0
  103. {funboost-44.2 → funboost-44.4}/funboost/core/current_task.py +0 -0
  104. {funboost-44.2 → funboost-44.4}/funboost/core/exceptions.py +0 -0
  105. {funboost-44.2 → funboost-44.4}/funboost/core/fabric_deploy_helper.py +0 -0
  106. {funboost-44.2 → funboost-44.4}/funboost/core/funboost_config_getter.py +0 -0
  107. {funboost-44.2 → funboost-44.4}/funboost/core/func_params_model.py +0 -0
  108. {funboost-44.2 → funboost-44.4}/funboost/core/function_result_status_config.py +0 -0
  109. {funboost-44.2 → funboost-44.4}/funboost/core/function_result_status_saver.py +0 -0
  110. {funboost-44.2 → funboost-44.4}/funboost/core/kill_remote_task.py +0 -0
  111. {funboost-44.2 → funboost-44.4}/funboost/core/msg_result_getter.py +0 -0
  112. {funboost-44.2 → funboost-44.4}/funboost/core/task_id_logger.py +0 -0
  113. {funboost-44.2 → funboost-44.4}/funboost/factories/__init__.py +0 -0
  114. {funboost-44.2 → funboost-44.4}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
  115. {funboost-44.2 → funboost-44.4}/funboost/factories/consumer_factory.py +0 -0
  116. {funboost-44.2 → funboost-44.4}/funboost/factories/publisher_factotry.py +0 -0
  117. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  118. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  119. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/app.py +0 -0
  120. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/functions.py +0 -0
  121. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/assets/css/custom.css +0 -0
  122. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
  123. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
  124. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/assets/js/custom.js +0 -0
  125. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
  126. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/css/style.css +0 -0
  127. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/images/bg.jpg +0 -0
  128. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/images/password.png +0 -0
  129. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/images/tick.png +0 -0
  130. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/images/user.png +0 -0
  131. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
  132. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/templates/index.html +0 -0
  133. {funboost-44.2 → funboost-44.4}/funboost/function_result_web/templates/login.html +0 -0
  134. {funboost-44.2 → funboost-44.4}/funboost/publishers/__init__.py +0 -0
  135. {funboost-44.2 → funboost-44.4}/funboost/publishers/base_publisher.py +0 -0
  136. {funboost-44.2 → funboost-44.4}/funboost/publishers/celery_publisher.py +0 -0
  137. {funboost-44.2 → funboost-44.4}/funboost/publishers/celery_publisher000.py +0 -0
  138. {funboost-44.2 → funboost-44.4}/funboost/publishers/confluent_kafka_publisher.py +0 -0
  139. {funboost-44.2 → funboost-44.4}/funboost/publishers/dramatiq_publisher.py +0 -0
  140. {funboost-44.2 → funboost-44.4}/funboost/publishers/http_publisher.py +0 -0
  141. {funboost-44.2 → funboost-44.4}/funboost/publishers/httpsqs_publisher.py +0 -0
  142. {funboost-44.2 → funboost-44.4}/funboost/publishers/huey_publisher.py +0 -0
  143. {funboost-44.2 → funboost-44.4}/funboost/publishers/kafka_publisher.py +0 -0
  144. {funboost-44.2 → funboost-44.4}/funboost/publishers/kombu_publisher.py +0 -0
  145. {funboost-44.2 → funboost-44.4}/funboost/publishers/local_python_queue_publisher.py +0 -0
  146. {funboost-44.2 → funboost-44.4}/funboost/publishers/meomory_deque_publisher.py +0 -0
  147. {funboost-44.2 → funboost-44.4}/funboost/publishers/mongomq_publisher.py +0 -0
  148. {funboost-44.2 → funboost-44.4}/funboost/publishers/mqtt_publisher.py +0 -0
  149. {funboost-44.2 → funboost-44.4}/funboost/publishers/nameko_publisher.py +0 -0
  150. {funboost-44.2 → funboost-44.4}/funboost/publishers/nats_publisher.py +0 -0
  151. {funboost-44.2 → funboost-44.4}/funboost/publishers/nsq_publisher.py +0 -0
  152. {funboost-44.2 → funboost-44.4}/funboost/publishers/peewee_publisher.py +0 -0
  153. {funboost-44.2 → funboost-44.4}/funboost/publishers/persist_queue_publisher.py +0 -0
  154. {funboost-44.2 → funboost-44.4}/funboost/publishers/pulsar_publisher.py +0 -0
  155. {funboost-44.2 → funboost-44.4}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
  156. {funboost-44.2 → funboost-44.4}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
  157. {funboost-44.2 → funboost-44.4}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
  158. {funboost-44.2 → funboost-44.4}/funboost/publishers/redis_publisher.py +0 -0
  159. {funboost-44.2 → funboost-44.4}/funboost/publishers/redis_publisher_lpush.py +0 -0
  160. {funboost-44.2 → funboost-44.4}/funboost/publishers/redis_publisher_priority.py +0 -0
  161. {funboost-44.2 → funboost-44.4}/funboost/publishers/redis_publisher_simple.py +0 -0
  162. {funboost-44.2 → funboost-44.4}/funboost/publishers/redis_pubsub_publisher.py +0 -0
  163. {funboost-44.2 → funboost-44.4}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
  164. {funboost-44.2 → funboost-44.4}/funboost/publishers/redis_stream_publisher.py +0 -0
  165. {funboost-44.2 → funboost-44.4}/funboost/publishers/rocketmq_publisher.py +0 -0
  166. {funboost-44.2 → funboost-44.4}/funboost/publishers/rq_publisher.py +0 -0
  167. {funboost-44.2 → funboost-44.4}/funboost/publishers/sqla_queue_publisher.py +0 -0
  168. {funboost-44.2 → funboost-44.4}/funboost/publishers/tcp_publisher.py +0 -0
  169. {funboost-44.2 → funboost-44.4}/funboost/publishers/txt_file_publisher.py +0 -0
  170. {funboost-44.2 → funboost-44.4}/funboost/publishers/udp_publisher.py +0 -0
  171. {funboost-44.2 → funboost-44.4}/funboost/publishers/zeromq_publisher.py +0 -0
  172. {funboost-44.2 → funboost-44.4}/funboost/queues/__init__.py +0 -0
  173. {funboost-44.2 → funboost-44.4}/funboost/queues/peewee_queue.py +0 -0
  174. {funboost-44.2 → funboost-44.4}/funboost/queues/sqla_queue.py +0 -0
  175. {funboost-44.2 → funboost-44.4}/funboost/set_frame_config.py +0 -0
  176. {funboost-44.2 → funboost-44.4}/funboost/timing_job/__init__.py +0 -0
  177. {funboost-44.2 → funboost-44.4}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
  178. {funboost-44.2 → funboost-44.4}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
  179. {funboost-44.2 → funboost-44.4}/funboost/utils/__init__.py +0 -0
  180. {funboost-44.2 → funboost-44.4}/funboost/utils/apscheduler_monkey.py +0 -0
  181. {funboost-44.2 → funboost-44.4}/funboost/utils/block_exit.py +0 -0
  182. {funboost-44.2 → funboost-44.4}/funboost/utils/bulk_operation.py +0 -0
  183. {funboost-44.2 → funboost-44.4}/funboost/utils/ctrl_c_end.py +0 -0
  184. {funboost-44.2 → funboost-44.4}/funboost/utils/custom_pysnooper.py +0 -0
  185. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages/__init__.py +0 -0
  186. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
  187. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
  188. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
  189. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
  190. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
  191. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
  192. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
  193. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
  194. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
  195. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
  196. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
  197. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
  198. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
  199. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
  200. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
  201. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
  202. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
  203. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
  204. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
  205. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
  206. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
  207. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
  208. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
  209. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
  210. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
  211. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
  212. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
  213. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
  214. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
  215. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
  216. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
  217. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
  218. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
  219. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
  220. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
  221. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
  222. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
  223. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
  224. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
  225. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
  226. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
  227. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
  228. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
  229. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
  230. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
  231. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
  232. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
  233. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
  234. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
  235. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
  236. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
  237. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
  238. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
  239. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
  240. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
  241. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
  242. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
  243. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
  244. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
  245. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
  246. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
  247. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
  248. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
  249. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
  250. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
  251. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
  252. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
  253. {funboost-44.2 → funboost-44.4}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
  254. {funboost-44.2 → funboost-44.4}/funboost/utils/develop_log.py +0 -0
  255. {funboost-44.2 → funboost-44.4}/funboost/utils/expire_lock.py +0 -0
  256. {funboost-44.2 → funboost-44.4}/funboost/utils/json_helper.py +0 -0
  257. {funboost-44.2 → funboost-44.4}/funboost/utils/mongo_util.py +0 -0
  258. {funboost-44.2 → funboost-44.4}/funboost/utils/monkey_color_log.py +0 -0
  259. {funboost-44.2 → funboost-44.4}/funboost/utils/monkey_patches.py +0 -0
  260. {funboost-44.2 → funboost-44.4}/funboost/utils/mqtt_util.py +0 -0
  261. {funboost-44.2 → funboost-44.4}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
  262. {funboost-44.2 → funboost-44.4}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
  263. {funboost-44.2 → funboost-44.4}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
  264. {funboost-44.2 → funboost-44.4}/funboost/utils/pysnooper_ydf/utils.py +0 -0
  265. {funboost-44.2 → funboost-44.4}/funboost/utils/pysnooper_ydf/variables.py +0 -0
  266. {funboost-44.2 → funboost-44.4}/funboost/utils/rabbitmq_factory.py +0 -0
  267. {funboost-44.2 → funboost-44.4}/funboost/utils/redis_manager.py +0 -0
  268. {funboost-44.2 → funboost-44.4}/funboost/utils/redis_manager_old.py +0 -0
  269. {funboost-44.2 → funboost-44.4}/funboost/utils/resource_monitoring.py +0 -0
  270. {funboost-44.2 → funboost-44.4}/funboost/utils/restart_python.py +0 -0
  271. {funboost-44.2 → funboost-44.4}/funboost/utils/simple_data_class.py +0 -0
  272. {funboost-44.2 → funboost-44.4}/funboost/utils/time_util.py +0 -0
  273. {funboost-44.2 → funboost-44.4}/funboost/utils/times/__init__.py +0 -0
  274. {funboost-44.2 → funboost-44.4}/funboost/utils/times/version.py +0 -0
  275. {funboost-44.2 → funboost-44.4}/funboost/utils/un_strict_json_dumps.py +0 -0
  276. {funboost-44.2 → funboost-44.4}/funboost.egg-info/SOURCES.txt +0 -0
  277. {funboost-44.2 → funboost-44.4}/funboost.egg-info/dependency_links.txt +0 -0
  278. {funboost-44.2 → funboost-44.4}/funboost.egg-info/entry_points.txt +0 -0
  279. {funboost-44.2 → funboost-44.4}/funboost.egg-info/top_level.txt +0 -0
  280. {funboost-44.2 → funboost-44.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 44.2
3
+ Version: 44.4
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
@@ -54,7 +54,7 @@ pip install funboost ,python全功能分布式函数调度框架,。 用法例
54
54
  python函数加速器,框架包罗万象,一统编程思维,兼容50% python编程业务场景,适用范围广。
55
55
  只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 方便 快速 强大。
56
56
  python万能分布式函数调度框架,支持5种并发模式,30+种消息队列中间件(或任务队列框架),
57
- 20种任务控制功能。给任意python函数赋能。
57
+ 30种任务控制功能。给任意python函数赋能。
58
58
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
59
59
  框架只需要学习@boost这一个装饰器的入参就可以,所有用法几乎和1.3例子一摸一样,非常简化简单。
60
60
  </pre>
@@ -136,7 +136,7 @@ pip install funboost --upgrade
136
136
 
137
137
  ## 1.2 框架功能介绍
138
138
 
139
- 分布式函数调度框架,支持5种并发模式,20+种消息中间件,20种任务控制功能。<br>
139
+ 分布式函数调度框架,支持5种并发模式,20+种消息中间件,30种任务控制功能。<br>
140
140
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
141
141
 
142
142
  有了这个框架,用户再也无需亲自手写操作进程、线程、协程的并发的代码了。
@@ -426,6 +426,7 @@ if __name__ == "__main__":
426
426
 
427
427
  <a href="https://imgse.com/i/pkFkCUe"><img src="https://s21.ax1x.com/2024/04/29/pkFkCUe.png" alt="pkFkCUe.png" border="0" /></a>
428
428
 
429
+ <a href="https://imgse.com/i/pkE6IYR"><img src="https://s21.ax1x.com/2024/05/07/pkE6IYR.png" alt="pkE6IYR.png" border="0" /></a>
429
430
 
430
431
  ## 1.4 python分布式函数执行为什么重要?
431
432
 
@@ -22,7 +22,7 @@ pip install funboost ,python全功能分布式函数调度框架,。 用法例
22
22
  python函数加速器,框架包罗万象,一统编程思维,兼容50% python编程业务场景,适用范围广。
23
23
  只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 方便 快速 强大。
24
24
  python万能分布式函数调度框架,支持5种并发模式,30+种消息队列中间件(或任务队列框架),
25
- 20种任务控制功能。给任意python函数赋能。
25
+ 30种任务控制功能。给任意python函数赋能。
26
26
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
27
27
  框架只需要学习@boost这一个装饰器的入参就可以,所有用法几乎和1.3例子一摸一样,非常简化简单。
28
28
  </pre>
@@ -104,7 +104,7 @@ pip install funboost --upgrade
104
104
 
105
105
  ## 1.2 框架功能介绍
106
106
 
107
- 分布式函数调度框架,支持5种并发模式,20+种消息中间件,20种任务控制功能。<br>
107
+ 分布式函数调度框架,支持5种并发模式,20+种消息中间件,30种任务控制功能。<br>
108
108
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
109
109
 
110
110
  有了这个框架,用户再也无需亲自手写操作进程、线程、协程的并发的代码了。
@@ -394,6 +394,7 @@ if __name__ == "__main__":
394
394
 
395
395
  <a href="https://imgse.com/i/pkFkCUe"><img src="https://s21.ax1x.com/2024/04/29/pkFkCUe.png" alt="pkFkCUe.png" border="0" /></a>
396
396
 
397
+ <a href="https://imgse.com/i/pkE6IYR"><img src="https://s21.ax1x.com/2024/05/07/pkE6IYR.png" alt="pkE6IYR.png" border="0" /></a>
397
398
 
398
399
  ## 1.4 python分布式函数执行为什么重要?
399
400
 
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
13
13
  这段注释说明和使用的用户无关,只和框架开发人员有关.
14
14
  '''
15
15
 
16
- __version__ = "44.2"
16
+ __version__ = "44.4"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -2,9 +2,11 @@ from functools import partial
2
2
  import asyncio
3
3
  from concurrent.futures import Executor
4
4
  from funboost.concurrent_pool.custom_threadpool_executor import ThreadPoolExecutorShrinkAble
5
+ # from funboost.concurrent_pool.flexible_thread_pool import FlexibleThreadPool
5
6
 
6
7
  # 没有使用内置的concurrent.futures.ThreadpoolExecutor线程池,而是使用智能伸缩线程池。
7
- async_executor_default = ThreadPoolExecutorShrinkAble()
8
+ async_executor_default = ThreadPoolExecutorShrinkAble(500)
9
+ # async_executor_default = FlexibleThreadPool(50) # 这个不支持future特性
8
10
 
9
11
 
10
12
  async def simple_run_in_executor(f, *args, async_executor: Executor = None, async_loop=None, **kwargs):
@@ -30,13 +30,12 @@ from threading import Lock
30
30
  import asyncio
31
31
 
32
32
  import nb_log
33
- from funboost.core.current_task import funboost_current_task, get_current_taskid
33
+ from funboost.core.current_task import funboost_current_task
34
34
  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 nb_log import (get_logger, LoggerLevelSetterMixin, LogManager, CompatibleLogger,
39
- LoggerMixinDefaultWithFileHandler, stdout_write, is_main_process,
38
+ from nb_log import (get_logger, LoggerLevelSetterMixin, LogManager, is_main_process,
40
39
  nb_log_config_default)
41
40
  from funboost.core.loggers import FunboostFileLoggerMixin, logger_prompt
42
41
 
@@ -71,7 +70,7 @@ from funboost.core import kill_remote_task
71
70
  from funboost.core.exceptions import ExceptionForRequeue, ExceptionForPushToDlxqueue
72
71
 
73
72
  # from funboost.core.booster import BoostersManager 互相导入
74
- from funboost.core.lazy_impoter import lazy_impoter
73
+ from funboost.core.lazy_impoter import funboost_lazy_impoter
75
74
 
76
75
 
77
76
  # patch_apscheduler_run_job()
@@ -174,6 +173,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
174
173
  broker_exclusive_config_merge = dict()
175
174
  broker_exclusive_config_merge.update(self.BROKER_EXCLUSIVE_CONFIG_DEFAULT)
176
175
  broker_exclusive_config_merge.update(self.consumer_params.broker_exclusive_config)
176
+ # print(broker_exclusive_config_merge)
177
177
  self.consumer_params.broker_exclusive_config = broker_exclusive_config_merge
178
178
 
179
179
  self._stop_flag = None
@@ -222,7 +222,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
222
222
  # log_filename=consumer_params.log_filename,
223
223
  # logger_name=consumer_params.logger_name,
224
224
  # broker_exclusive_config=self.consumer_params.broker_exclusive_config)
225
- self.publisher_params = BaseJsonAbleModel.init_by_another_model(PublisherParams, consumer_params)
225
+ self.publisher_params = BaseJsonAbleModel.init_by_another_model(PublisherParams, self.consumer_params)
226
226
  # print(self.publisher_params)
227
227
  if is_main_process:
228
228
  self.logger.info(f'{self.queue_name} consumer 的消费者配置:\n {self.consumer_params.json_str_value()}')
@@ -322,16 +322,16 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
322
322
  # ConsumersManager.show_all_consumer_info()
323
323
  # noinspection PyBroadException
324
324
  pid_queue_name_tuple = (os.getpid(), self.queue_name)
325
- if pid_queue_name_tuple in lazy_impoter.BoostersManager.pid_queue_name__has_start_consume_set:
325
+ if pid_queue_name_tuple in funboost_lazy_impoter.BoostersManager.pid_queue_name__has_start_consume_set:
326
326
  self.logger.warning(f'{pid_queue_name_tuple} 已启动消费,不要一直去启动消费,funboost框架自动阻止.') # 有的人乱写代码,无数次在函数内部或for循环里面执行 f.consume(),一个队列只需要启动一次消费,不然每启动一次性能消耗很大,直到程序崩溃
327
327
  return
328
328
  else:
329
- lazy_impoter.BoostersManager.pid_queue_name__has_start_consume_set.add(pid_queue_name_tuple)
329
+ funboost_lazy_impoter.BoostersManager.pid_queue_name__has_start_consume_set.add(pid_queue_name_tuple)
330
330
  GlobalVars.has_start_a_consumer_flag = True
331
331
  try:
332
332
  self._concurrent_mode_dispatcher.check_all_concurrent_mode()
333
333
  self._check_monkey_patch()
334
- except BaseException:
334
+ except BaseException: # noqa
335
335
  traceback.print_exc()
336
336
  os._exit(4444) # noqa
337
337
  self.logger.info(f'开始消费 {self._queue_name} 中的消息')
@@ -373,7 +373,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
373
373
  key = 'apscheduler.redisjobstore_runonce'
374
374
  if RedisMixin().redis_db_frame.sadd(key, runonce_uuid): # 这样可以阻止多次启动同队列名消费者 redis jobstore多次运行函数.
375
375
  cls.logger_apscheduler.debug(f'延时任务用普通消息重新发布到普通队列 {msg}')
376
- lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name).publish(msg)
376
+ funboost_lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name).publish(msg)
377
377
 
378
378
  @abc.abstractmethod
379
379
  def _shedual_task(self):
@@ -383,10 +383,10 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
383
383
  """
384
384
  raise NotImplementedError
385
385
 
386
- def convert_msg_before_run(self, msg: dict):
386
+ def convert_msg_before_run(self, msg: typing.Union[str, dict]) -> dict:
387
387
  """
388
388
  转换消息,消息没有使用funboost来发送,并且没有extra相关字段时候
389
- 用户也可以按照4.21文档,继承任意Consumer类,并实现这个方法 convert_msg_before_run,先转换消息.
389
+ 用户也可以按照4.21文档,继承任意Consumer类,并实现这个方法 convert_msg_before_run,先转换不规范的消息.
390
390
  """
391
391
  """ 一般消息至少包含这样
392
392
  {
@@ -404,6 +404,9 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
404
404
  extra_params = {'task_id': task_id, 'publish_time': round(time.time(), 4),
405
405
  'publish_time_format': time.strftime('%Y-%m-%d %H:%M:%S')}
406
406
  """
407
+ if isinstance(msg, str):
408
+ msg = json.loads(msg)
409
+ # 以下是清洗补全字段.
407
410
  if 'extra' not in msg:
408
411
  msg['extra'] = {'is_auto_fill_extra': True}
409
412
  extra = msg['extra']
@@ -413,6 +416,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
413
416
  extra['publish_time'] = MsgGenerater.generate_publish_time()
414
417
  if 'publish_time_format':
415
418
  extra['publish_time_format'] = MsgGenerater.generate_publish_time_format()
419
+ return msg
416
420
 
417
421
  def _submit_task(self, kw):
418
422
  while 1: # 这一块的代码为支持暂停消费。
@@ -424,12 +428,12 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
424
428
  self._last_show_pause_log_time = time.time()
425
429
  else:
426
430
  break
427
-
431
+ self._print_message_get_from_broker(kw['body'])
432
+ kw['body'] = self.convert_msg_before_run(kw['body'])
428
433
  if self._judge_is_daylight():
429
434
  self._requeue(kw)
430
435
  time.sleep(self.time_interval_for_check_do_not_run_time)
431
436
  return
432
- self.convert_msg_before_run(kw['body'])
433
437
  function_only_params = delete_keys_and_return_new_dict(kw['body'], )
434
438
  if self._get_priority_conf(kw, 'do_task_filtering') and self._redis_filter.check_value_exists(
435
439
  function_only_params): # 对函数的参数进行检查,过滤已经执行过并且成功的任务。
@@ -524,12 +528,13 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
524
528
  if self._has_execute_times_in_recent_second >= qpsx:
525
529
  time.sleep((1 - (time.time() - self._last_start_count_qps_timestamp)) * 1)
526
530
 
527
- def _print_message_get_from_broker(self, broker_name, msg):
531
+ def _print_message_get_from_broker(self, msg, broker_name=None):
528
532
  # print(999)
529
533
  if self.consumer_params.is_show_message_get_from_broker:
530
534
  if isinstance(msg, (dict, list)):
531
535
  msg = json.dumps(msg, ensure_ascii=False)
532
- self.logger.debug(f'从 {broker_name} 中间件 的 {self._queue_name} 中取出的消息是 {msg}')
536
+ # 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}')
533
538
 
534
539
  def _get_priority_conf(self, kw: dict, broker_task_config_key: str):
535
540
  broker_task_config = kw['body'].get('extra', {}).get(broker_task_config_key, None)
@@ -617,13 +622,15 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
617
622
  msg = f'{self._unit_time_for_count} 秒内执行了 {self._execute_task_times_every_unit_time} 次函数 [ {self.consuming_function.__name__} ] ,' \
618
623
  f'函数平均运行耗时 {avarage_function_spend_time} 秒。 '
619
624
  self.logger.info(msg)
620
- if self._msg_num_in_broker != -1 and time.time() - self._last_show_remaining_execution_time > self._show_remaining_execution_time_interval: # 有的中间件无法统计或没实现统计队列剩余数量的,统一返回的是-1,不显示这句话。
621
- # msg += f''' ,预计还需要 {time_util.seconds_to_hour_minute_second(self._msg_num_in_broker * avarage_function_spend_time / active_consumer_num)} 时间 才能执行完成 {self._msg_num_in_broker}个剩余的任务'''
622
- need_time = time_util.seconds_to_hour_minute_second(self._msg_num_in_broker / (self._execute_task_times_every_unit_time / self._unit_time_for_count) /
623
- self._distributed_consumer_statistics.active_consumer_num)
624
- msg += f''' 预计还需要 {need_time} 时间 才能执行完成 队列 {self.queue_name} 中的 {self._msg_num_in_broker} 个剩余任务'''
625
- self.logger.info(msg)
626
- self._last_show_remaining_execution_time = time.time()
625
+ if time.time() - self._last_show_remaining_execution_time > self._show_remaining_execution_time_interval:
626
+ self._msg_num_in_broker = self.publisher_of_same_queue.get_message_count()
627
+ if self._msg_num_in_broker != -1 : # 有的中间件无法统计或没实现统计队列剩余数量的,统一返回的是-1,不显示这句话。
628
+ # msg += f''' ,预计还需要 {time_util.seconds_to_hour_minute_second(self._msg_num_in_broker * avarage_function_spend_time / active_consumer_num)} 时间 才能执行完成 {self._msg_num_in_broker}个剩余的任务'''
629
+ need_time = time_util.seconds_to_hour_minute_second(self._msg_num_in_broker / (self._execute_task_times_every_unit_time / self._unit_time_for_count) /
630
+ self._distributed_consumer_statistics.active_consumer_num)
631
+ msg += f''' 预计还需要 {need_time} 时间 才能执行完成 队列 {self.queue_name} 中的 {self._msg_num_in_broker} 个剩余任务'''
632
+ self.logger.info(msg)
633
+ self._last_show_remaining_execution_time = time.time()
627
634
  self._current_time_for_execute_task_times_every_unit_time = time.time()
628
635
  self._consuming_function_cost_time_total_every_unit_time = 0
629
636
  self._execute_task_times_every_unit_time = 0
@@ -823,7 +830,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
823
830
  self.logger.critical(msg=log_msg)
824
831
  # noinspection PyProtectedMember,PyUnresolvedReferences
825
832
  os._exit(444)
826
- if not self.consumer_params.function_timeout :
833
+ if not self.consumer_params.function_timeout:
827
834
  rs = await corotinue_obj
828
835
  # rs = await asyncio.wait_for(corotinue_obj, timeout=4)
829
836
  else:
@@ -49,7 +49,7 @@ class HTTPConsumer(AbstractConsumer, ):
49
49
  async def recv_msg(request: AioHttpImporter().Request):
50
50
  data = await request.post()
51
51
  msg = data['msg']
52
- kw = {'body': json.loads(msg)}
52
+ kw = {'body': msg}
53
53
  self._submit_task(kw)
54
54
  return AioHttpImporter().web.Response(text="finish")
55
55
 
@@ -60,8 +60,7 @@ class HttpHandler(BaseHTTPRequestHandler):
60
60
  if self.path == '/queue':
61
61
  msg = form['msg'].value
62
62
  # print(msg)
63
- self.consumer._print_message_get_from_broker('http ', msg)
64
- kw = {'body': json.loads(msg)}
63
+ kw = {'body': msg}
65
64
  self.consumer._submit_task(kw)
66
65
 
67
66
  # 开始回复
@@ -25,7 +25,7 @@ class HttpsqsConsumer(AbstractConsumer):
25
25
  if text == 'HTTPSQS_GET_END':
26
26
  time.sleep(0.5)
27
27
  else:
28
- kw = {'body': json.loads(text)}
28
+ kw = {'body': text}
29
29
  self._submit_task(kw)
30
30
 
31
31
  def _confirm_consume(self, kw):
@@ -61,7 +61,7 @@ class KafkaConsumer(AbstractConsumer):
61
61
  if self.consumer_params.is_show_message_get_from_broker:
62
62
  self.logger.debug(
63
63
  f'从kafka的 [{message.topic}] 主题,分区 {message.partition} 中 取出的消息是: {message.value.decode()}')
64
- kw = {'consumer': consumer, 'message': message, 'body': json.loads(message.value)}
64
+ kw = {'consumer': consumer, 'message': message, 'body': message.value}
65
65
  self._submit_task(kw)
66
66
 
67
67
  def _confirm_consume(self, kw):
@@ -66,7 +66,7 @@ class KafkaConsumerManuallyCommit(AbstractConsumer):
66
66
  # value() offset() partition()
67
67
  # print('Received message: {}'.format(msg.value().decode('utf-8'))) # noqa
68
68
  self._partion__offset_consume_status_map[msg.partition()][msg.offset()] = 0
69
- kw = {'partition': msg.partition(), 'offset': msg.offset(), 'body': json.loads(msg.value())} # noqa
69
+ kw = {'partition': msg.partition(), 'offset': msg.offset(), 'body': msg.value()} # noqa
70
70
  if self.consumer_params.is_show_message_get_from_broker:
71
71
  self.logger.debug(
72
72
  f'从kafka的 [{self._queue_name}] 主题,分区 {msg.partition()} 中 的 offset {msg.offset()} 取出的消息是: {msg.value()}') # noqa
@@ -165,7 +165,7 @@ class SaslPlainKafkaConsumer(KafkaConsumerManuallyCommit):
165
165
  # print('Received message: {}'.format(msg.value().decode('utf-8'))) # noqa
166
166
  self._partion__offset_consume_status_map[msg.partition(
167
167
  )][msg.offset()] = 0
168
- kw = {'partition': msg.partition(), 'offset': msg.offset(), 'body': json.loads(msg.value())} # noqa
168
+ kw = {'partition': msg.partition(), 'offset': msg.offset(), 'body': msg.value()} # noqa
169
169
  if self.consumer_params.is_show_message_get_from_broker:
170
170
  self.logger.debug(
171
171
  f'从kafka的 [{self._queue_name}] 主题,分区 {msg.partition()} 中 的 offset {msg.offset()} 取出的消息是: {msg.value()}') # noqa
@@ -194,7 +194,6 @@ Transport Options
194
194
 
195
195
  def callback(body: dict, message: Message):
196
196
  # print(type(body),body,type(message),message)
197
- self._print_message_get_from_broker('kombu', body)
198
197
  # self.logger.debug(f""" 从 kombu {self._middware_name} 中取出的消息是 {body}""")
199
198
  kw = {'body': body, 'message': message, }
200
199
  self._submit_task(kw)
@@ -20,9 +20,8 @@ class LocalPythonQueueConsumer(AbstractConsumer):
20
20
  def _shedual_task(self):
21
21
  while True:
22
22
  task = self.local_python_queue.get()
23
- if isinstance(task, str):
24
- task = json.loads(task)
25
- self._print_message_get_from_broker('当前python解释器内部', task)
23
+ if isinstance(task, dict):
24
+ task = json.dumps(task)
26
25
  # self.logger.debug(f'从当前python解释器内部的 [{self._queue_name}] 队列中 取出的消息是: {json.dumps(task)} ')
27
26
  kw = {'body': task}
28
27
  self._submit_task(kw)
@@ -21,9 +21,6 @@ class LocalPythonQueueConsumer(AbstractConsumer):
21
21
  def _shedual_task(self):
22
22
  while True:
23
23
  task = self.local_python_queue.popleft()
24
- if isinstance(task, str):
25
- task = json.loads(task)
26
- self._print_message_get_from_broker('当前python解释器内部', task)
27
24
  # self.logger.debug(f'从当前python解释器内部的 [{self._queue_name}] 队列中 取出的消息是: {json.dumps(task)} ')
28
25
  kw = {'body': task}
29
26
  self._submit_task(kw)
@@ -19,7 +19,6 @@ class MongoMqConsumer(AbstractConsumer, MongoMixin):
19
19
  job = mp.queue.next()
20
20
  if job is not None:
21
21
  # self.logger.debug(f'从mongo的 [{self._queue_name}] 队列中 取出的消息是: 消息是: {job.payload} ')
22
- self._print_message_get_from_broker('mongo', job.payload)
23
22
  kw = {'body': job.payload, 'job': job}
24
23
  self._submit_task(kw)
25
24
  else:
@@ -48,7 +48,7 @@ class MqttConsumer(AbstractConsumer):
48
48
  # noinspection PyUnusedLocal
49
49
  def _on_message(self, client, userdata, msg):
50
50
  # print(msg.topic + " " + str(msg.payload))
51
- kw = {'body': json.loads(msg.payload)}
51
+ kw = {'body': msg.payload}
52
52
  self._submit_task(kw)
53
53
 
54
54
  def _confirm_consume(self, kw):
@@ -21,7 +21,7 @@ class NatsConsumer(AbstractConsumer):
21
21
  # print(type(msg))
22
22
  # print(msg.reply)
23
23
  # print(f"Received a message with subject {msg.subject}: {msg.payload}")
24
- kw = {'body': json.loads(msg.payload)}
24
+ kw = {'body': msg.payload}
25
25
  self._submit_task(kw)
26
26
 
27
27
  nats_client.subscribe(subject=self.queue_name, callback=callback)
@@ -27,10 +27,9 @@ class NsqConsumer(AbstractConsumer):
27
27
  @consumer.on_message.connect
28
28
  def handler(consumerx: GnsqImporter().Consumer, message: GnsqImporter().Message):
29
29
  # 第一条消息不能并发,第一条消息之后可以并发。
30
- self._print_message_get_from_broker('nsq', message.body.decode())
31
30
  # self.logger.debug(f'从nsq的 [{self._queue_name}] 主题中 取出的消息是: {message.body.decode()}')
32
31
  message.enable_async()
33
- kw = {'consumer': consumerx, 'message': message, 'body': json.loads(message.body)}
32
+ kw = {'consumer': consumerx, 'message': message, 'body': message.body}
34
33
  self._submit_task(kw)
35
34
 
36
35
  consumer.start()
@@ -20,8 +20,7 @@ class PeeweeConsumer(AbstractConsumer):
20
20
  task_dict = self.queue.get()
21
21
  # print(task_dict)
22
22
  # self.logger.debug(f'从数据库 {frame_config.SQLACHEMY_ENGINE_URL[:25]}。。 的 [{self._queue_name}] 队列中 取出的消息是: 消息是: {sqla_task_dict}')
23
- self._print_message_get_from_broker(f'从数据库 {BrokerConnConfig.SQLACHEMY_ENGINE_URL[:25]}',task_dict)
24
- kw = {'body':json.loads(task_dict['body']), 'job_id': task_dict['job_id']}
23
+ kw = {'body':task_dict['body'], 'job_id': task_dict['job_id']}
25
24
  self._submit_task(kw)
26
25
 
27
26
  def _confirm_consume(self, kw):
@@ -17,8 +17,7 @@ class PersistQueueConsumer(AbstractConsumer):
17
17
  while True:
18
18
  item = pub.queue.get()
19
19
  # self.logger.debug(f'从本地持久化sqlite的 [{self._queue_name}] 队列中 取出的消息是: {item} ')
20
- self._print_message_get_from_broker('本地持久化sqlite', item)
21
- kw = {'body': json.loads(item), 'q': pub.queue, 'item': item}
20
+ kw = {'body': item, 'q': pub.queue, 'item': item}
22
21
  self._submit_task(kw)
23
22
 
24
23
  def _confirm_consume(self, kw):
@@ -53,8 +53,7 @@ class PulsarConsumer(AbstractConsumer, ):
53
53
  while True:
54
54
  msg = self._consumer.receive()
55
55
  if msg:
56
- self._print_message_get_from_broker('pulsar', msg.data())
57
- kw = {'body': json.loads(msg.data()), 'msg': msg}
56
+ kw = {'body': msg.data(), 'msg': msg}
58
57
  self._submit_task(kw)
59
58
 
60
59
  def _confirm_consume(self, kw):
@@ -21,8 +21,6 @@ class RabbitmqConsumerAmqpStorm(AbstractConsumer):
21
21
  def callback(amqpstorm_message: amqpstorm.Message):
22
22
  body = amqpstorm_message.body
23
23
  # self.logger.debug(f'从rabbitmq的 [{self._queue_name}] 队列中 取出的消息是: {body}')
24
- self._print_message_get_from_broker('rabbitmq', body)
25
- body = json.loads(body)
26
24
  kw = {'amqpstorm_message': amqpstorm_message, 'body': body}
27
25
  self._submit_task(kw)
28
26
 
@@ -37,8 +37,6 @@ class RabbitmqConsumer(AbstractConsumer):
37
37
  def callback(ch, method, properties, body):
38
38
  body = body.decode()
39
39
  # self.logger.debug(f'从rabbitmq的 [{self._queue_name}] 队列中 取出的消息是: {body}')
40
- self._print_message_get_from_broker('rabbitmq', body)
41
- body = json.loads(body)
42
40
  kw = {'ch': ch, 'method': method, 'properties': properties, 'body': body}
43
41
  self._submit_task(kw)
44
42
 
@@ -34,7 +34,6 @@ class RabbitmqConsumer(AbstractConsumer):
34
34
  def callback(ch, method, properties, body):
35
35
  body = body.decode()
36
36
  self.logger.debug(f'从rabbitmq的 [{self._queue_name}] 队列中 取出的消息是: {body}')
37
- body = json.loads(body)
38
37
  kw = {'ch': ch, 'method': method, 'properties': properties, 'body': body}
39
38
  self._submit_task(kw)
40
39
 
@@ -23,8 +23,7 @@ class RabbitmqConsumerRabbitpy(AbstractConsumer):
23
23
  for message in channel.basic_consume(self._queue_name, no_ack=False):
24
24
  body = message.body.decode()
25
25
  # self.logger.debug(f'从rabbitmq {self._queue_name} 队列中 取出的消息是: {body}')
26
- self._print_message_get_from_broker('rabbitmq', body)
27
- kw = {'message': message, 'body': json.loads(message.body.decode())}
26
+ kw = {'message': message, 'body': body}
28
27
  self._submit_task(kw)
29
28
 
30
29
  def _confirm_consume(self, kw):
@@ -27,9 +27,7 @@ class RedisBrpopLpushConsumer(AbstractConsumer, RedisMixin):
27
27
  while True:
28
28
  msg = self.redis_db_frame.brpoplpush(self._queue_name, unack_list_name, timeout=60)
29
29
  if msg:
30
- self._print_message_get_from_broker('redis', msg)
31
- task_dict = json.loads(msg)
32
- kw = {'body': task_dict, 'raw_msg': msg}
30
+ kw = {'body': msg, 'raw_msg': msg}
33
31
  self._submit_task(kw)
34
32
 
35
33
  def _confirm_consume(self, kw):
@@ -34,17 +34,15 @@ class RedisConsumer(AbstractConsumer, RedisMixin):
34
34
  task_str_list = p.execute()[0]
35
35
  if task_str_list:
36
36
  # self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {task_str_list} ')
37
- self._print_message_get_from_broker('redis', task_str_list)
37
+ self._print_message_get_from_broker( task_str_list)
38
38
  for task_str in task_str_list:
39
- kw = {'body': json.loads(task_str)}
39
+ kw = {'body': task_str}
40
40
  self._submit_task(kw)
41
41
  else:
42
42
  result = self.redis_db_frame.brpop(self._queue_name, timeout=60)
43
43
  if result:
44
44
  # self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {result[1].decode()} ')
45
- self._print_message_get_from_broker('redis', result[1])
46
- task_dict = json.loads(result[1])
47
- kw = {'body': task_dict}
45
+ kw = {'body': result[1]}
48
46
  self._submit_task(kw)
49
47
 
50
48
  def _shedual_task00(self):
@@ -52,9 +50,7 @@ class RedisConsumer(AbstractConsumer, RedisMixin):
52
50
  result = self.redis_db_frame.blpop(self._queue_name, timeout=60)
53
51
  if result:
54
52
  # self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {result[1].decode()} ')
55
- self._print_message_get_from_broker('redis', result[1])
56
- task_dict = json.loads(result[1])
57
- kw = {'body': task_dict}
53
+ kw = {'body': result[1]}
58
54
  self._submit_task(kw)
59
55
 
60
56
  def _confirm_consume(self, kw):
@@ -32,9 +32,7 @@ class RedisConsumerAckAble000(ConsumerConfirmMixinWithTheHelpOfRedis, AbstractCo
32
32
  # 如果运行了第20行,但没运行下面这一行,仍然有极小概率会丢失1个任务。但比不做控制随意关停,丢失几百个线程你的redis任务强多了。
33
33
  self._add_task_str_to_unack_zset(task_str, )
34
34
  # self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {task_str} ')
35
- self._print_message_get_from_broker('reids', task_str)
36
- task_dict = json.loads(task_str)
37
- kw = {'body': task_dict, 'task_str': task_str}
35
+ kw = {'body': task_str, 'task_str': task_str}
38
36
  self._submit_task(kw)
39
37
 
40
38
  def _requeue(self, kw):
@@ -74,8 +72,7 @@ class RedisConsumerAckAble111(ConsumerConfirmMixinWithTheHelpOfRedis, AbstractCo
74
72
  if return_v:
75
73
  task_str = return_v
76
74
  self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {task_str} ')
77
- task_dict = json.loads(task_str)
78
- kw = {'body': task_dict, 'task_str': task_str}
75
+ kw = {'body': task_str, 'task_str': task_str}
79
76
  self._submit_task(kw)
80
77
  else:
81
78
  # print('xiuxi')
@@ -118,8 +115,7 @@ class RedisConsumerAckAble(ConsumerConfirmMixinWithTheHelpOfRedisByHearbeat, Abs
118
115
  if return_v:
119
116
  task_str = return_v
120
117
  self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {task_str} ')
121
- task_dict = json.loads(task_str)
122
- kw = {'body': task_dict, 'task_str': task_str}
118
+ kw = {'body': task_str, 'task_str': task_str}
123
119
  self._submit_task(kw)
124
120
  else:
125
121
  # print('xiuxi')
@@ -149,11 +145,10 @@ class RedisConsumerAckAble(ConsumerConfirmMixinWithTheHelpOfRedisByHearbeat, Abs
149
145
  while True:
150
146
  task_str_list = script(keys=[self._queue_name, self._unack_zset_name], args=[time.time()])
151
147
  if task_str_list:
152
- self._print_message_get_from_broker('redis', task_str_list)
148
+ self._print_message_get_from_broker( task_str_list)
153
149
  # self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {task_str_list} ')
154
150
  for task_str in task_str_list:
155
- task_dict = json.loads(task_str)
156
- kw = {'body': task_dict, 'task_str': task_str}
151
+ kw = {'body': task_str, 'task_str': task_str}
157
152
  self._submit_task(kw)
158
153
  else:
159
154
  time.sleep(0.2)
@@ -60,11 +60,9 @@ class RedisPriorityConsumer(RedisConsumerAckAble):
60
60
  if task_tuple:
61
61
  msg = task_tuple[1]
62
62
  self.redis_db_frame.zadd(self._unack_zset_name, {msg: time.time()})
63
- self.logger.debug(task_tuple)
64
- self._print_message_get_from_broker('redis', msg)
63
+ # self.logger.debug(task_tuple)
65
64
  # self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {task_str_list} ')
66
- task_dict = json.loads(msg)
67
- kw = {'body': task_dict, 'task_str': msg}
65
+ kw = {'body': msg, 'task_str': msg}
68
66
  self._submit_task(kw)
69
67
 
70
68
  def _shedual_task(self):
@@ -87,10 +85,8 @@ class RedisPriorityConsumer(RedisConsumerAckAble):
87
85
  except redis5.WatchError:
88
86
  continue
89
87
  if task_tuple:
90
- self._print_message_get_from_broker('redis', msg)
91
88
  # self.logger.debug(f'从redis的 [{self._queue_name}] 队列中 取出的消息是: {task_str_list} ')
92
- task_dict = json.loads(msg)
93
- kw = {'body': task_dict, 'task_str': msg}
89
+ kw = {'body': msg, 'task_str': msg}
94
90
  self._submit_task(kw)
95
91
 
96
92
  def _requeue(self, kw):
@@ -17,9 +17,8 @@ class RedisConsumer(AbstractConsumer, RedisMixin):
17
17
  while True:
18
18
  result = self.redis_db_frame.blpop(self._queue_name,timeout=60)
19
19
  if result:
20
- self._print_message_get_from_broker('redis',result[1])
21
- task_dict = json.loads(result[1])
22
- kw = {'body': task_dict}
20
+
21
+ kw = {'body': result[1]}
23
22
  self._submit_task(kw)
24
23
 
25
24
  def _confirm_consume(self, kw):
@@ -18,8 +18,8 @@ class RedisPbSubConsumer(AbstractConsumer, RedisMixin):
18
18
  pub.subscribe(self.queue_name)
19
19
  for item in pub.listen():
20
20
  if item['type'] == 'message':
21
- self._print_message_get_from_broker('reids', item['data'])
22
- kw = {'body': json.loads(item['data'])}
21
+
22
+ kw = {'body': item['data']}
23
23
  self._submit_task(kw)
24
24
 
25
25
  def _shedual_task(self):
@@ -29,7 +29,7 @@ class RedisPbSubConsumer(AbstractConsumer, RedisMixin):
29
29
  while True: # 无限循环
30
30
  msg_list = pub.parse_response(timeout=60) # 得到消息内容
31
31
  if msg_list:
32
- kw = {'body': json.loads(msg_list[2])}
32
+ kw = {'body': msg_list[2]}
33
33
  self._submit_task(kw)
34
34
 
35
35