funboost 48.7__tar.gz → 48.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of funboost might be problematic. Click here for more details.

Files changed (345) hide show
  1. {funboost-48.7/funboost.egg-info → funboost-48.8}/PKG-INFO +7 -3
  2. {funboost-48.7 → funboost-48.8}/README.md +12 -2
  3. {funboost-48.7 → funboost-48.8}/funboost/__init__.py +1 -1
  4. {funboost-48.7 → funboost-48.8}/funboost/__main__.py +2 -0
  5. {funboost-48.7 → funboost-48.8}/funboost/constant.py +2 -1
  6. {funboost-48.7 → funboost-48.8}/funboost/consumers/base_consumer.py +4 -3
  7. {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +1 -1
  8. {funboost-48.7 → funboost-48.8}/funboost/core/active_cousumer_info_getter.py +3 -3
  9. {funboost-48.7 → funboost-48.8}/funboost/core/booster.py +1 -1
  10. {funboost-48.7 → funboost-48.8}/funboost/core/cli/funboost_fire.py +10 -0
  11. {funboost-48.7 → funboost-48.8}/funboost/core/msg_result_getter.py +1 -0
  12. funboost-48.8/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  13. funboost-48.8/funboost/function_result_web/__pycache__/app.cpython-39.pyc +0 -0
  14. funboost-48.8/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  15. funboost-48.8/funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
  16. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/app.py +42 -2
  17. funboost-48.8/funboost/function_result_web/app_debug_start.py +6 -0
  18. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/functions.py +57 -3
  19. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js_cdn/tabulator-tables@5.5.0/dist/js/tabulator.min.js +1 -1
  20. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/about.html +0 -9
  21. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/conusme_speed.html +2 -2
  22. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/fun_result_table.html +1 -1
  23. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/index.html +34 -9
  24. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/queue_op.html +1 -1
  25. funboost-48.8/funboost/function_result_web/templates/rpc_call.html +298 -0
  26. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/running_consumer_by_ip.html +2 -2
  27. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/running_consumer_by_queue_name.html +2 -2
  28. funboost-48.8/funboost/utils/ctrl_c_end.py +37 -0
  29. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +6 -0
  30. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/readme.md +6 -0
  31. {funboost-48.7 → funboost-48.8/funboost.egg-info}/PKG-INFO +7 -3
  32. {funboost-48.7 → funboost-48.8}/funboost.egg-info/SOURCES.txt +2 -0
  33. funboost-48.7/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  34. funboost-48.7/funboost/function_result_web/__pycache__/app.cpython-39.pyc +0 -0
  35. funboost-48.7/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  36. funboost-48.7/funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
  37. funboost-48.7/funboost/utils/ctrl_c_end.py +0 -19
  38. {funboost-48.7 → funboost-48.8}/LICENSE +0 -0
  39. {funboost-48.7 → funboost-48.8}/MANIFEST.in +0 -0
  40. {funboost-48.7 → funboost-48.8}/funboost/__init__old.py +0 -0
  41. {funboost-48.7 → funboost-48.8}/funboost/assist/__init__.py +0 -0
  42. {funboost-48.7 → funboost-48.8}/funboost/assist/celery_helper.py +0 -0
  43. {funboost-48.7 → funboost-48.8}/funboost/assist/dramatiq_helper.py +0 -0
  44. {funboost-48.7 → funboost-48.8}/funboost/assist/faststream_helper.py +0 -0
  45. {funboost-48.7 → funboost-48.8}/funboost/assist/huey_helper.py +0 -0
  46. {funboost-48.7 → funboost-48.8}/funboost/assist/rocketry_helper.py +0 -0
  47. {funboost-48.7 → funboost-48.8}/funboost/assist/rq_helper.py +0 -0
  48. {funboost-48.7 → funboost-48.8}/funboost/assist/rq_windows_worker.py +0 -0
  49. {funboost-48.7 → funboost-48.8}/funboost/assist/taskiq_helper.py +0 -0
  50. {funboost-48.7 → funboost-48.8}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
  51. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/__init__.py +0 -0
  52. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/async_helper.py +0 -0
  53. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/async_pool_executor.py +0 -0
  54. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/__init__.py +0 -0
  55. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
  56. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
  57. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
  58. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/backup/grok_async_pool.py +0 -0
  59. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/base_pool_type.py +0 -0
  60. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
  61. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
  62. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
  63. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
  64. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
  65. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
  66. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
  67. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
  68. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
  69. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
  70. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/pool_commons.py +0 -0
  71. {funboost-48.7 → funboost-48.8}/funboost/concurrent_pool/single_thread_executor.py +0 -0
  72. {funboost-48.7 → funboost-48.8}/funboost/consumers/__init__.py +0 -0
  73. {funboost-48.7 → funboost-48.8}/funboost/consumers/celery_consumer.py +0 -0
  74. {funboost-48.7 → funboost-48.8}/funboost/consumers/confirm_mixin.py +0 -0
  75. {funboost-48.7 → funboost-48.8}/funboost/consumers/dramatiq_consumer.py +0 -0
  76. {funboost-48.7 → funboost-48.8}/funboost/consumers/empty_consumer.py +0 -0
  77. {funboost-48.7 → funboost-48.8}/funboost/consumers/faststream_consumer.py +0 -0
  78. {funboost-48.7 → funboost-48.8}/funboost/consumers/http_consumer.py +0 -0
  79. {funboost-48.7 → funboost-48.8}/funboost/consumers/http_consumer000.py +0 -0
  80. {funboost-48.7 → funboost-48.8}/funboost/consumers/httpsqs_consumer.py +0 -0
  81. {funboost-48.7 → funboost-48.8}/funboost/consumers/huey_consumer.py +0 -0
  82. {funboost-48.7 → funboost-48.8}/funboost/consumers/kafka_consumer.py +0 -0
  83. {funboost-48.7 → funboost-48.8}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
  84. {funboost-48.7 → funboost-48.8}/funboost/consumers/kombu_consumer.py +0 -0
  85. {funboost-48.7 → funboost-48.8}/funboost/consumers/local_python_queue_consumer.py +0 -0
  86. {funboost-48.7 → funboost-48.8}/funboost/consumers/memory_deque_consumer.py +0 -0
  87. {funboost-48.7 → funboost-48.8}/funboost/consumers/mongomq_consumer.py +0 -0
  88. {funboost-48.7 → funboost-48.8}/funboost/consumers/mqtt_consumer.py +0 -0
  89. {funboost-48.7 → funboost-48.8}/funboost/consumers/nameko_consumer.py +0 -0
  90. {funboost-48.7 → funboost-48.8}/funboost/consumers/nats_consumer.py +0 -0
  91. {funboost-48.7 → funboost-48.8}/funboost/consumers/nsq_consumer.py +0 -0
  92. {funboost-48.7 → funboost-48.8}/funboost/consumers/peewee_conusmer.py +0 -0
  93. {funboost-48.7 → funboost-48.8}/funboost/consumers/persist_queue_consumer.py +0 -0
  94. {funboost-48.7 → funboost-48.8}/funboost/consumers/pulsar_consumer.py +0 -0
  95. {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
  96. {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
  97. {funboost-48.7 → funboost-48.8}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
  98. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
  99. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer.py +0 -0
  100. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_ack_able.py +0 -0
  101. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_ack_using_timeout.py +0 -0
  102. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_priority.py +0 -0
  103. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_consumer_simple.py +0 -0
  104. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_filter.py +0 -0
  105. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_pubsub_consumer.py +0 -0
  106. {funboost-48.7 → funboost-48.8}/funboost/consumers/redis_stream_consumer.py +0 -0
  107. {funboost-48.7 → funboost-48.8}/funboost/consumers/rocketmq_consumer.py +0 -0
  108. {funboost-48.7 → funboost-48.8}/funboost/consumers/rq_consumer.py +0 -0
  109. {funboost-48.7 → funboost-48.8}/funboost/consumers/sqlachemy_consumer.py +0 -0
  110. {funboost-48.7 → funboost-48.8}/funboost/consumers/tcp_consumer.py +0 -0
  111. {funboost-48.7 → funboost-48.8}/funboost/consumers/txt_file_consumer.py +0 -0
  112. {funboost-48.7 → funboost-48.8}/funboost/consumers/udp_consumer.py +0 -0
  113. {funboost-48.7 → funboost-48.8}/funboost/consumers/zeromq_consumer.py +0 -0
  114. {funboost-48.7 → funboost-48.8}/funboost/contrib/__init__.py +0 -0
  115. {funboost-48.7 → funboost-48.8}/funboost/contrib/api_publish_msg.py +0 -0
  116. {funboost-48.7 → funboost-48.8}/funboost/contrib/django_db_deco.py +0 -0
  117. {funboost-48.7 → funboost-48.8}/funboost/contrib/queue2queue.py +0 -0
  118. {funboost-48.7 → funboost-48.8}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
  119. {funboost-48.7 → funboost-48.8}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
  120. {funboost-48.7 → funboost-48.8}/funboost/core/__init__.py +0 -0
  121. {funboost-48.7 → funboost-48.8}/funboost/core/cli/__init__.py +0 -0
  122. {funboost-48.7 → funboost-48.8}/funboost/core/cli/discovery_boosters.py +0 -0
  123. {funboost-48.7 → funboost-48.8}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
  124. {funboost-48.7 → funboost-48.8}/funboost/core/current_task.py +0 -0
  125. {funboost-48.7 → funboost-48.8}/funboost/core/exceptions.py +0 -0
  126. {funboost-48.7 → funboost-48.8}/funboost/core/fabric_deploy_helper.py +0 -0
  127. {funboost-48.7 → funboost-48.8}/funboost/core/funboost_config_getter.py +0 -0
  128. {funboost-48.7 → funboost-48.8}/funboost/core/funboost_time.py +0 -0
  129. {funboost-48.7 → funboost-48.8}/funboost/core/func_params_model.py +0 -0
  130. {funboost-48.7 → funboost-48.8}/funboost/core/function_result_status_config.py +0 -0
  131. {funboost-48.7 → funboost-48.8}/funboost/core/function_result_status_saver.py +0 -0
  132. {funboost-48.7 → funboost-48.8}/funboost/core/helper_funs.py +0 -0
  133. {funboost-48.7 → funboost-48.8}/funboost/core/kill_remote_task.py +0 -0
  134. {funboost-48.7 → funboost-48.8}/funboost/core/lazy_impoter.py +0 -0
  135. {funboost-48.7 → funboost-48.8}/funboost/core/loggers.py +0 -0
  136. {funboost-48.7 → funboost-48.8}/funboost/core/muliti_process_enhance.py +0 -0
  137. {funboost-48.7 → funboost-48.8}/funboost/core/serialization.py +0 -0
  138. {funboost-48.7 → funboost-48.8}/funboost/core/task_id_logger.py +0 -0
  139. {funboost-48.7 → funboost-48.8}/funboost/factories/__init__.py +0 -0
  140. {funboost-48.7 → funboost-48.8}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
  141. {funboost-48.7 → funboost-48.8}/funboost/factories/consumer_factory.py +0 -0
  142. {funboost-48.7 → funboost-48.8}/funboost/factories/publisher_factotry.py +0 -0
  143. {funboost-48.7 → funboost-48.8}/funboost/funboost_config_deafult.py +0 -0
  144. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/css/custom.css +0 -0
  145. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
  146. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
  147. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/js/custom.js +0 -0
  148. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
  149. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css/content_page_style.css +0 -0
  150. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css/style.css +0 -0
  151. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css +0 -0
  152. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/css/font-awesome.min.css +0 -0
  153. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/FontAwesome.otf +0 -0
  154. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.eot +0 -0
  155. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.svg +0 -0
  156. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf +0 -0
  157. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff +0 -0
  158. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
  159. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/select2/4.0.13/css/select2.min.css +0 -0
  160. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator.min.css +0 -0
  161. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator_bootstrap3.min.css +0 -0
  162. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/css/bootstrap.min.css +0 -0
  163. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.eot +0 -0
  164. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.svg +0 -0
  165. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.ttf +0 -0
  166. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff +0 -0
  167. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2 +0 -0
  168. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/bg.jpg +0 -0
  169. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/favicon.ico +0 -0
  170. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/password.png +0 -0
  171. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/tick.png +0 -0
  172. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/images/user.png +0 -0
  173. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/bootstrap-datetimepicker.min.js +0 -0
  174. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/echarts.min.js +0 -0
  175. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
  176. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/moment-with-locales.min.js +0 -0
  177. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js/select2.min.js +0 -0
  178. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/static/js_cdn/bootstrap/3.3.7/js/bootstrap.min.js +0 -0
  179. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/index_backup.html +0 -0
  180. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/index_/344/270/215/345/217/257/346/212/230/345/217/240.html" +0 -0
  181. {funboost-48.7 → funboost-48.8}/funboost/function_result_web/templates/login.html +0 -0
  182. {funboost-48.7 → funboost-48.8}/funboost/publishers/__init__.py +0 -0
  183. {funboost-48.7 → funboost-48.8}/funboost/publishers/base_publisher.py +0 -0
  184. {funboost-48.7 → funboost-48.8}/funboost/publishers/celery_publisher.py +0 -0
  185. {funboost-48.7 → funboost-48.8}/funboost/publishers/celery_publisher000.py +0 -0
  186. {funboost-48.7 → funboost-48.8}/funboost/publishers/confluent_kafka_publisher.py +0 -0
  187. {funboost-48.7 → funboost-48.8}/funboost/publishers/dramatiq_publisher.py +0 -0
  188. {funboost-48.7 → funboost-48.8}/funboost/publishers/empty_publisher.py +0 -0
  189. {funboost-48.7 → funboost-48.8}/funboost/publishers/faststream_publisher.py +0 -0
  190. {funboost-48.7 → funboost-48.8}/funboost/publishers/http_publisher.py +0 -0
  191. {funboost-48.7 → funboost-48.8}/funboost/publishers/httpsqs_publisher.py +0 -0
  192. {funboost-48.7 → funboost-48.8}/funboost/publishers/huey_publisher.py +0 -0
  193. {funboost-48.7 → funboost-48.8}/funboost/publishers/kafka_publisher.py +0 -0
  194. {funboost-48.7 → funboost-48.8}/funboost/publishers/kombu_publisher.py +0 -0
  195. {funboost-48.7 → funboost-48.8}/funboost/publishers/local_python_queue_publisher.py +0 -0
  196. {funboost-48.7 → funboost-48.8}/funboost/publishers/meomory_deque_publisher.py +0 -0
  197. {funboost-48.7 → funboost-48.8}/funboost/publishers/mongomq_publisher.py +0 -0
  198. {funboost-48.7 → funboost-48.8}/funboost/publishers/mqtt_publisher.py +0 -0
  199. {funboost-48.7 → funboost-48.8}/funboost/publishers/nameko_publisher.py +0 -0
  200. {funboost-48.7 → funboost-48.8}/funboost/publishers/nats_publisher.py +0 -0
  201. {funboost-48.7 → funboost-48.8}/funboost/publishers/nsq_publisher.py +0 -0
  202. {funboost-48.7 → funboost-48.8}/funboost/publishers/peewee_publisher.py +0 -0
  203. {funboost-48.7 → funboost-48.8}/funboost/publishers/persist_queue_publisher.py +0 -0
  204. {funboost-48.7 → funboost-48.8}/funboost/publishers/pulsar_publisher.py +0 -0
  205. {funboost-48.7 → funboost-48.8}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
  206. {funboost-48.7 → funboost-48.8}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
  207. {funboost-48.7 → funboost-48.8}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
  208. {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher.py +0 -0
  209. {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher_lpush.py +0 -0
  210. {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher_priority.py +0 -0
  211. {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_publisher_simple.py +0 -0
  212. {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_pubsub_publisher.py +0 -0
  213. {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
  214. {funboost-48.7 → funboost-48.8}/funboost/publishers/redis_stream_publisher.py +0 -0
  215. {funboost-48.7 → funboost-48.8}/funboost/publishers/rocketmq_publisher.py +0 -0
  216. {funboost-48.7 → funboost-48.8}/funboost/publishers/rq_publisher.py +0 -0
  217. {funboost-48.7 → funboost-48.8}/funboost/publishers/sqla_queue_publisher.py +0 -0
  218. {funboost-48.7 → funboost-48.8}/funboost/publishers/tcp_publisher.py +0 -0
  219. {funboost-48.7 → funboost-48.8}/funboost/publishers/txt_file_publisher.py +0 -0
  220. {funboost-48.7 → funboost-48.8}/funboost/publishers/udp_publisher.py +0 -0
  221. {funboost-48.7 → funboost-48.8}/funboost/publishers/zeromq_publisher.py +0 -0
  222. {funboost-48.7 → funboost-48.8}/funboost/queues/__init__.py +0 -0
  223. {funboost-48.7 → funboost-48.8}/funboost/queues/memory_queues_map.py +0 -0
  224. {funboost-48.7 → funboost-48.8}/funboost/queues/peewee_queue.py +0 -0
  225. {funboost-48.7 → funboost-48.8}/funboost/queues/sqla_queue.py +0 -0
  226. {funboost-48.7 → funboost-48.8}/funboost/set_frame_config.py +0 -0
  227. {funboost-48.7 → funboost-48.8}/funboost/timing_job/__init__.py +0 -0
  228. {funboost-48.7 → funboost-48.8}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
  229. {funboost-48.7 → funboost-48.8}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
  230. {funboost-48.7 → funboost-48.8}/funboost/timing_job/timing_job_base.py +0 -0
  231. {funboost-48.7 → funboost-48.8}/funboost/timing_job/timing_push.py +0 -0
  232. {funboost-48.7 → funboost-48.8}/funboost/utils/__init__.py +0 -0
  233. {funboost-48.7 → funboost-48.8}/funboost/utils/apscheduler_monkey.py +0 -0
  234. {funboost-48.7 → funboost-48.8}/funboost/utils/block_exit.py +0 -0
  235. {funboost-48.7 → funboost-48.8}/funboost/utils/bulk_operation.py +0 -0
  236. {funboost-48.7 → funboost-48.8}/funboost/utils/class_utils.py +0 -0
  237. {funboost-48.7 → funboost-48.8}/funboost/utils/class_utils2.py +0 -0
  238. {funboost-48.7 → funboost-48.8}/funboost/utils/custom_pysnooper.py +0 -0
  239. {funboost-48.7 → funboost-48.8}/funboost/utils/decorators.py +0 -0
  240. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/__init__.py +0 -0
  241. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
  242. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
  243. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
  244. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
  245. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
  246. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
  247. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
  248. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
  249. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-313.pyc +0 -0
  250. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
  251. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
  252. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
  253. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-313.pyc +0 -0
  254. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
  255. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
  256. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
  257. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
  258. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
  259. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
  260. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
  261. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
  262. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
  263. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
  264. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
  265. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
  266. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
  267. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
  268. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
  269. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
  270. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
  271. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
  272. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
  273. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
  274. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
  275. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
  276. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
  277. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
  278. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
  279. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
  280. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
  281. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
  282. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
  283. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
  284. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
  285. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
  286. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
  287. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
  288. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
  289. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
  290. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
  291. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
  292. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
  293. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
  294. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
  295. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
  296. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
  297. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
  298. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
  299. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
  300. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
  301. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
  302. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
  303. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
  304. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
  305. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
  306. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc2222.py +0 -0
  307. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
  308. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
  309. {funboost-48.7 → funboost-48.8}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
  310. {funboost-48.7 → funboost-48.8}/funboost/utils/develop_log.py +0 -0
  311. {funboost-48.7 → funboost-48.8}/funboost/utils/expire_lock.py +0 -0
  312. {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/StoppableThread.py +0 -0
  313. {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/__init__.py +0 -0
  314. {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/dafunc.py +0 -0
  315. {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/exceptions.py +0 -0
  316. {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/py2_raise.py +0 -0
  317. {funboost-48.7 → funboost-48.8}/funboost/utils/func_timeout/py3_raise.py +0 -0
  318. {funboost-48.7 → funboost-48.8}/funboost/utils/json_helper.py +0 -0
  319. {funboost-48.7 → funboost-48.8}/funboost/utils/mongo_util.py +0 -0
  320. {funboost-48.7 → funboost-48.8}/funboost/utils/monkey_color_log.py +0 -0
  321. {funboost-48.7 → funboost-48.8}/funboost/utils/monkey_patches.py +0 -0
  322. {funboost-48.7 → funboost-48.8}/funboost/utils/mqtt_util.py +0 -0
  323. {funboost-48.7 → funboost-48.8}/funboost/utils/paramiko_util.py +0 -0
  324. {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
  325. {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
  326. {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
  327. {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/utils.py +0 -0
  328. {funboost-48.7 → funboost-48.8}/funboost/utils/pysnooper_ydf/variables.py +0 -0
  329. {funboost-48.7 → funboost-48.8}/funboost/utils/rabbitmq_factory.py +0 -0
  330. {funboost-48.7 → funboost-48.8}/funboost/utils/redis_manager.py +0 -0
  331. {funboost-48.7 → funboost-48.8}/funboost/utils/redis_manager_old.py +0 -0
  332. {funboost-48.7 → funboost-48.8}/funboost/utils/resource_monitoring.py +0 -0
  333. {funboost-48.7 → funboost-48.8}/funboost/utils/restart_python.py +0 -0
  334. {funboost-48.7 → funboost-48.8}/funboost/utils/simple_data_class.py +0 -0
  335. {funboost-48.7 → funboost-48.8}/funboost/utils/str_utils.py +0 -0
  336. {funboost-48.7 → funboost-48.8}/funboost/utils/time_util.py +0 -0
  337. {funboost-48.7 → funboost-48.8}/funboost/utils/times/__init__.py +0 -0
  338. {funboost-48.7 → funboost-48.8}/funboost/utils/times/version.py +0 -0
  339. {funboost-48.7 → funboost-48.8}/funboost/utils/un_strict_json_dumps.py +0 -0
  340. {funboost-48.7 → funboost-48.8}/funboost.egg-info/dependency_links.txt +0 -0
  341. {funboost-48.7 → funboost-48.8}/funboost.egg-info/entry_points.txt +0 -0
  342. {funboost-48.7 → funboost-48.8}/funboost.egg-info/requires.txt +0 -0
  343. {funboost-48.7 → funboost-48.8}/funboost.egg-info/top_level.txt +0 -0
  344. {funboost-48.7 → funboost-48.8}/setup.cfg +0 -0
  345. {funboost-48.7 → funboost-48.8}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 48.7
3
+ Version: 48.8
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,funboost web manager 方便查看和管理消费函数;99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -535,17 +535,21 @@ funboost web manager 截图:
535
535
  函数消费结果:可查看和搜索函数实时消费状态和结果
536
536
  [![pEJCffK.png](https://s21.ax1x.com/2025/03/04/pEJCffK.png)](https://imgse.com/i/pEJCffK)
537
537
 
538
+ 消费速度图:可查看实时和历史消费速度
539
+ [![pEJCWY6.png](https://s21.ax1x.com/2025/03/04/pEJCWY6.png)](https://imgse.com/i/pEJCWY6)
540
+
538
541
  运行中消费者 by ip: 根据ip搜索有哪些消费者
539
542
  [![pEJCRFx.png](https://s21.ax1x.com/2025/03/04/pEJCRFx.png)](https://imgse.com/i/pEJCRFx)
540
543
 
541
544
 
542
- 队列操作:查看和操作队列
545
+ 队列操作:查看和操作队列,包括 清空清空 暂停消费 恢复消费 调整qps和并发
543
546
  [![pEJC6m9.png](https://s21.ax1x.com/2025/03/04/pEJC6m9.png)](https://imgse.com/i/pEJC6m9)
544
547
 
545
548
  队列操作,查看消费者详情:查看队列的所有消费者详情
546
549
  [![pEJCgT1.png](https://s21.ax1x.com/2025/03/04/pEJCgT1.png)](https://imgse.com/i/pEJCgT1)
547
550
 
548
-
551
+ rpc调用:
552
+ [![pETq8hj.png](https://s21.ax1x.com/2025/04/28/pETq8hj.png)](https://imgse.com/i/pETq8hj)
549
553
 
550
554
  ## 1.4 python分布式函数执行为什么重要?
551
555
 
@@ -1,3 +1,9 @@
1
+ ---
2
+ noteId: "aa56d860240511f0b39f3b947bbde921"
3
+ tags: []
4
+
5
+ ---
6
+
1
7
 
2
8
 
3
9
  # 1.python万能分布式函数调度框架简funboost简介
@@ -415,17 +421,21 @@ funboost web manager 截图:
415
421
  函数消费结果:可查看和搜索函数实时消费状态和结果
416
422
  [![pEJCffK.png](https://s21.ax1x.com/2025/03/04/pEJCffK.png)](https://imgse.com/i/pEJCffK)
417
423
 
424
+ 消费速度图:可查看实时和历史消费速度
425
+ [![pEJCWY6.png](https://s21.ax1x.com/2025/03/04/pEJCWY6.png)](https://imgse.com/i/pEJCWY6)
426
+
418
427
  运行中消费者 by ip: 根据ip搜索有哪些消费者
419
428
  [![pEJCRFx.png](https://s21.ax1x.com/2025/03/04/pEJCRFx.png)](https://imgse.com/i/pEJCRFx)
420
429
 
421
430
 
422
- 队列操作:查看和操作队列
431
+ 队列操作:查看和操作队列,包括 清空清空 暂停消费 恢复消费 调整qps和并发
423
432
  [![pEJC6m9.png](https://s21.ax1x.com/2025/03/04/pEJC6m9.png)](https://imgse.com/i/pEJC6m9)
424
433
 
425
434
  队列操作,查看消费者详情:查看队列的所有消费者详情
426
435
  [![pEJCgT1.png](https://s21.ax1x.com/2025/03/04/pEJCgT1.png)](https://imgse.com/i/pEJCgT1)
427
436
 
428
-
437
+ rpc调用:
438
+ [![pETq8hj.png](https://s21.ax1x.com/2025/04/28/pETq8hj.png)](https://imgse.com/i/pETq8hj)
429
439
 
430
440
  ## 1.4 python分布式函数执行为什么重要?
431
441
 
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
13
13
  这段注释说明和使用的用户无关,只和框架开发人员有关.
14
14
  '''
15
15
 
16
- __version__ = "48.7"
16
+ __version__ = "48.8"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -18,6 +18,7 @@ def _check_pass_params():
18
18
 
19
19
  def main():
20
20
  _check_pass_params()
21
+
21
22
 
22
23
  fire.Fire(BoosterFire, )
23
24
 
@@ -31,4 +32,5 @@ python -m funboost --project_root_path=/codes/funboost --booster_dirs_str=tes
31
32
  python -m funboost --project_root_path=/codes/funboost --booster_dirs_str=test_frame/test_funboost_cli/test_find_boosters --max_depth=2 push test_find_queue1 --x=1 --y=2
32
33
 
33
34
 
35
+ python -m funboost --project_root_path=/codes/funboost start_web
34
36
  '''
@@ -112,4 +112,5 @@ class ConstStrForClassMethod:
112
112
  class RedisKeys:
113
113
  REDIS_KEY_PAUSE_FLAG = 'funboost_pause_flag'
114
114
  REDIS_KEY_STOP_FLAG = 'funboost_stop_flag'
115
- QUEUE__MSG_COUNT_MAP = 'funboost_queue__msg_count_map'
115
+ QUEUE__MSG_COUNT_MAP = 'funboost_queue__msg_count_map'
116
+ FUNBOOST_QUEUE__CONSUMER_PARAMS= 'funboost_queue__consumer_parmas'
@@ -165,6 +165,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
165
165
  self._redis_filter = filter_class(self._redis_filter_key_name, consumer_params.task_filtering_expire_seconds)
166
166
 
167
167
  self._lock_for_count_execute_task_times_every_unit_time = Lock()
168
+ self._async_lock_for_count_execute_task_times_every_unit_time = asyncio.Lock()
168
169
  # self._unit_time_for_count = 10 # 每隔多少秒计数,显示单位时间内执行多少次,暂时固定为10秒。
169
170
  # self._execute_task_times_every_unit_time = 0 # 每单位时间执行了多少次任务。
170
171
  # self._execute_task_times_every_unit_time_fail =0 # 每单位时间执行了多少次任务失败。
@@ -836,8 +837,8 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
836
837
  if (current_function_result_status.success is False and current_retry_times == max_retry_times) or current_function_result_status.success is True:
837
838
  await simple_run_in_executor(push_result)
838
839
 
839
- # 异步执行不存在线程并发,不需要加锁。
840
- self.metric_calculation.cal(t_start_run_fun, current_function_result_status)
840
+ async with self._async_lock_for_count_execute_task_times_every_unit_time:
841
+ self.metric_calculation.cal(t_start_run_fun, current_function_result_status)
841
842
 
842
843
  self.user_custom_record_process_info_func(current_function_result_status) # 两种方式都可以自定义,记录结果.建议使用文档4.21.b的方式继承来重写
843
844
  await self.aio_user_custom_record_process_info_func(current_function_result_status)
@@ -1175,7 +1176,7 @@ class MetricCalculation:
1175
1176
  self.consumer._distributed_consumer_statistics.active_consumer_num)
1176
1177
  msg += f''' 预计还需要 {need_time} 时间 才能执行完成 队列 {self.consumer.queue_name} 中的 {self.msg_num_in_broker} 个剩余任务'''
1177
1178
  self.consumer.logger.info(msg)
1178
- self.last_show_remaining_execution_time = time.time()
1179
+ self.last_show_remaining_execution_time = time.time()
1179
1180
  self.current_time_for_execute_task_times_every_unit_time = time.time()
1180
1181
  self.consuming_function_cost_time_total_every_unit_time_tmp = 0
1181
1182
  self.execute_task_times_every_unit_time_temp = 0
@@ -42,5 +42,5 @@ class RabbitmqConsumerAmqpStorm(AbstractConsumer):
42
42
 
43
43
  def _requeue(self, kw):
44
44
  # amqpstorm.Message.delivery_tag
45
- print(kw['amqpstorm_message'].delivery_tag)
45
+ # print(kw['amqpstorm_message'].delivery_tag)
46
46
  kw['amqpstorm_message'].nack(requeue=True)
@@ -104,12 +104,12 @@ class QueueConusmerParamsGetter(RedisMixin, FunboostFileLoggerMixin):
104
104
  queue__pause_map = self.redis_db_frame.hgetall(RedisKeys.REDIS_KEY_PAUSE_FLAG)
105
105
  return {k:int(v) for k,v in queue__pause_map.items()}
106
106
 
107
- def get_msg_num(self):
107
+ def get_msg_num(self,ignore_report_ts=False):
108
108
  queue__msg_count_info_map = self.redis_db_frame.hgetall(RedisKeys.QUEUE__MSG_COUNT_MAP)
109
109
  queue__msg_count_dict = {}
110
110
  for queue_name,info_json in queue__msg_count_info_map.items():
111
111
  info_dict = json.loads(info_json)
112
- if info_dict['report_ts'] > time.time() - 15 and info_dict['last_get_msg_num_ts'] > time.time() - 1200:
112
+ if ignore_report_ts or (info_dict['report_ts'] > time.time() - 15 and info_dict['last_get_msg_num_ts'] > time.time() - 1200):
113
113
  queue__msg_count_dict[queue_name] = info_dict['msg_num_in_broker']
114
114
  return queue__msg_count_dict
115
115
 
@@ -127,7 +127,7 @@ class QueueConusmerParamsGetter(RedisMixin, FunboostFileLoggerMixin):
127
127
  queue__active_consumers_map = ActiveCousumerProcessInfoGetter().get_all_hearbeat_info_partition_by_queue_name()
128
128
  queue__consumer_params_map = self.get_queue_params()
129
129
  queue__pause_map = self.get_pause_flag()
130
- queue__msg_count_dict = self.get_msg_num()
130
+ queue__msg_count_dict = self.get_msg_num(ignore_report_ts=True)
131
131
  queue_params_and_active_consumers = {}
132
132
 
133
133
  for queue, consumer_params in queue__consumer_params_map.items():
@@ -307,7 +307,7 @@ class BoostersManager:
307
307
  跨不同的项目,发布消息。例如proj1中定义有fun1消费函数,但proj2无法直接到日proj1的函数,无法直接 fun1.push 来发布消息
308
308
  可以使用这个方法,获取一个publisher。
309
309
 
310
- publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name='proj1_queue', broker_kind=BrokerEnum.SQLITE_QUEUE))
310
+ publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name='proj1_queue', broker_kind=publisher_params.broker_kind))
311
311
  publisher.publish({'x': aaa})
312
312
  """
313
313
  pid = os.getpid()
@@ -127,3 +127,13 @@ class BoosterFire(object):
127
127
  """
128
128
  for queue_name in queue_names:
129
129
  BoostersManager.get_booster(queue_name).continue_consume()
130
+
131
+ def start_funboost_web_manager(self):
132
+ """
133
+ 启动funboost web管理器;
134
+ 例子: start_funboost_web_manager
135
+ """
136
+ from funboost.function_result_web.app import start_funboost_web_manager
137
+ start_funboost_web_manager()
138
+
139
+ start_web = start_funboost_web_manager
@@ -52,6 +52,7 @@ class AsyncResult(RedisMixin):
52
52
  @property
53
53
  def status_and_result(self):
54
54
  if not self._has_pop:
55
+ # print(f'{self.task_id} 正在等待结果')
55
56
  redis_value = self.redis_db_filter_and_rpc_result.blpop(self.task_id, self.timeout)
56
57
  self._has_pop = True
57
58
  if redis_value is not None:
@@ -12,6 +12,9 @@ import os
12
12
 
13
13
  import datetime
14
14
  import json
15
+ import traceback
16
+
17
+ from funboost.core.func_params_model import PriorityConsumingControlConfig
15
18
 
16
19
  """
17
20
  pip install Flask flask_bootstrap flask_wtf wtforms flask_login
@@ -26,6 +29,7 @@ from flask_login import login_user, logout_user, login_required, LoginManager, U
26
29
  import nb_log
27
30
  from funboost import nb_print,ActiveCousumerProcessInfoGetter,BoostersManager,PublisherParams,RedisMixin
28
31
  from funboost.function_result_web.functions import get_cols, query_result, get_speed, Statistic
32
+ from funboost.function_result_web import functions as app_functions
29
33
  from funboost.core.active_cousumer_info_getter import QueueConusmerParamsGetter
30
34
  from funboost.constant import RedisKeys
31
35
 
@@ -119,7 +123,8 @@ def logout():
119
123
  @app.route('/')
120
124
  @login_required
121
125
  def index():
122
- return render_template('index.html')
126
+ page = request.args.get('page')
127
+ return render_template('index.html', page=page)
123
128
 
124
129
 
125
130
  @app.route('/query_cols')
@@ -238,6 +243,39 @@ def resume_consume(queue_name):
238
243
  RedisMixin().redis_db_frame.hset(RedisKeys.REDIS_KEY_PAUSE_FLAG, queue_name,'0')
239
244
  return jsonify({'success':True})
240
245
 
246
+ @app.route('/queue/get_msg_num',methods=['GET'])
247
+ def get_msg_num():
248
+ return jsonify(QueueConusmerParamsGetter().get_msg_num(ignore_report_ts=True))
249
+
250
+ @app.route('/rpc/rpc_call',methods=['POST'])
251
+ def rpc_call():
252
+ """
253
+ class MsgItem(BaseModel):
254
+ queue_name: str # 队列名
255
+ msg_body: dict # 消息体,就是boost函数的入参字典,例如 {"x":1,"y":2}
256
+ need_result: bool = False # 发布消息后,是否需要返回结果
257
+ timeout: int = 60 # 等待结果返回的最大等待时间.
258
+
259
+
260
+ class PublishResponse(BaseModel):
261
+ succ: bool
262
+ msg: str
263
+ status_and_result: typing.Optional[dict] = None # 消费函数的消费状态和结果.
264
+ task_id:str
265
+ """
266
+
267
+ msg_item = request.get_json()
268
+ return jsonify(app_functions.rpc_call(**msg_item))
269
+
270
+ @app.route('/rpc/get_result_by_task_id',methods=['GET'])
271
+ def get_result_by_task_id():
272
+ res = app_functions.get_result_by_task_id(task_id=request.args.get('task_id'),
273
+ timeout=request.args.get('timeout') or 60)
274
+ if res['status_and_result'] is None:
275
+ return jsonify({'succ':False,'msg':'task_id不存在或者超时或者结果已经过期'})
276
+ return jsonify(res)
277
+
278
+
241
279
  def start_funboost_web_manager(host='0.0.0.0', port=27018,block=False):
242
280
  print('start_funboost_web_manager , sys.path :', sys.path)
243
281
  def _start_funboost_web_manager():
@@ -246,7 +284,9 @@ def start_funboost_web_manager(host='0.0.0.0', port=27018,block=False):
246
284
  _start_funboost_web_manager()
247
285
  else:
248
286
  threading.Thread(target=_start_funboost_web_manager).start()
249
-
287
+
288
+
289
+
250
290
  if __name__ == '__main__':
251
291
  # app.jinja_env.auto_reload = True
252
292
  # with app.test_request_context():
@@ -0,0 +1,6 @@
1
+ from funboost.function_result_web.app import app
2
+
3
+
4
+ if __name__ == '__main__':
5
+ app.run(debug=True, threaded=True, host='0.0.0.0', port=27018)
6
+
@@ -6,9 +6,16 @@ import json
6
6
  from pprint import pprint
7
7
  import time
8
8
  import copy
9
+ import traceback
9
10
  from funboost import nb_print
11
+ from funboost.constant import RedisKeys
12
+ from funboost.core.booster import BoostersManager
13
+ from funboost.core.func_params_model import PriorityConsumingControlConfig, PublisherParams
14
+ from funboost.core.msg_result_getter import AsyncResult
15
+ from funboost.core.serialization import Serialization
10
16
  from funboost.utils import time_util, decorators, LoggerMixin
11
17
  from funboost.utils.mongo_util import MongoMixin
18
+ from funboost.utils.redis_manager import RedisMixin
12
19
 
13
20
  # from test_frame.my_patch_frame_config import do_patch_frame_config
14
21
  #
@@ -144,6 +151,46 @@ class Statistic(LoggerMixin):
144
151
  t2.strftime('%Y-%m-%d %H:%M:%S'))
145
152
  self.result['recent_60_seconds']['count_arr'].append(count)
146
153
 
154
+ def rpc_call(queue_name, msg_body, need_result, timeout):
155
+
156
+ status_and_result = None
157
+ task_id = None
158
+ try:
159
+ boost_params_json = RedisMixin().redis_db_frame.hget(RedisKeys.FUNBOOST_QUEUE__CONSUMER_PARAMS,queue_name)
160
+ boost_params_dict = Serialization.to_dict(boost_params_json)
161
+ broker_kind = boost_params_dict['broker_kind']
162
+ publisher = BoostersManager.get_cross_project_publisher(PublisherParams(queue_name=queue_name,
163
+ broker_kind=broker_kind,
164
+ publish_msg_log_use_full_msg=True))
165
+
166
+ if need_result:
167
+ # if booster.boost_params.is_using_rpc_mode is False:
168
+ # raise ValueError(f' need_result 为true,{booster.queue_name} 队列消费者 需要@boost设置支持rpc模式')
169
+
170
+ async_result = publisher.publish(msg_body,priority_control_config=PriorityConsumingControlConfig(is_using_rpc_mode=True))
171
+ async_result.set_timeout(timeout)
172
+ status_and_result = async_result.status_and_result
173
+ # print(status_and_result)
174
+ task_id = async_result.task_id
175
+ else:
176
+ async_result =publisher.publish(msg_body)
177
+ task_id = async_result.task_id
178
+ return dict(succ=True, msg=f'{queue_name} 队列,消息发布成功',
179
+ status_and_result=status_and_result,task_id=task_id)
180
+ except Exception as e:
181
+ return dict(succ=False, msg=f'{queue_name} 队列,消息发布失败 {type(e)} {e} {traceback.format_exc()}',
182
+ status_and_result=status_and_result,task_id=task_id)
183
+
184
+
185
+ def get_result_by_task_id(task_id,timeout):
186
+ async_result = AsyncResult(task_id)
187
+ async_result.set_timeout(timeout)
188
+ status_and_result = async_result.status_and_result
189
+ return dict(succ=True, msg=f'task_id:{task_id} 获取结果成功',
190
+ status_and_result=status_and_result,task_id=task_id)
191
+
192
+
193
+
147
194
 
148
195
  if __name__ == '__main__':
149
196
  # print(get_cols('4'))
@@ -152,6 +199,13 @@ if __name__ == '__main__':
152
199
  # nb_print(get_speed_last_minute('queue_test54'))
153
200
 
154
201
  # nb_print(get_speed('queue_test56', '2019-09-18 16:03:29', '2019-09-23 16:03:29'))
155
- stat = Statistic('queue_test_f01t')
156
- stat.build_result()
157
- nb_print(stat.result)
202
+ # stat = Statistic('queue_test_f01t')
203
+ # stat.build_result()
204
+ # nb_print(stat.result)
205
+
206
+ # res = rpc_call('queue_test_g02t',{'x':1,'y':2},True,60)
207
+
208
+ res = get_result_by_task_id('3232',60)
209
+ print(res)
210
+
211
+