funboost 49.5__tar.gz → 49.7__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-49.5/funboost.egg-info → funboost-49.7}/PKG-INFO +184 -102
  2. {funboost-49.5 → funboost-49.7}/README.md +94 -100
  3. {funboost-49.5 → funboost-49.7}/funboost/__init__.py +1 -1
  4. {funboost-49.5 → funboost-49.7}/funboost/beggar_version_implementation/beggar_redis_consumer.py +3 -1
  5. {funboost-49.5 → funboost-49.7}/funboost/constant.py +39 -3
  6. {funboost-49.5 → funboost-49.7}/funboost/consumers/base_consumer.py +34 -7
  7. {funboost-49.5 → funboost-49.7}/funboost/consumers/celery_consumer.py +1 -0
  8. funboost-49.7/funboost/consumers/empty_consumer.py +37 -0
  9. {funboost-49.5 → funboost-49.7}/funboost/consumers/faststream_consumer.py +1 -1
  10. {funboost-49.5 → funboost-49.7}/funboost/consumers/http_consumer.py +12 -7
  11. {funboost-49.5 → funboost-49.7}/funboost/consumers/kafka_consumer_manually_commit.py +0 -2
  12. {funboost-49.5 → funboost-49.7}/funboost/consumers/kombu_consumer.py +0 -50
  13. {funboost-49.5 → funboost-49.7}/funboost/consumers/tcp_consumer.py +11 -10
  14. {funboost-49.5 → funboost-49.7}/funboost/consumers/udp_consumer.py +9 -6
  15. {funboost-49.5 → funboost-49.7}/funboost/consumers/zeromq_consumer.py +18 -11
  16. {funboost-49.5 → funboost-49.7}/funboost/core/exceptions.py +7 -0
  17. {funboost-49.5 → funboost-49.7}/funboost/core/func_params_model.py +16 -7
  18. {funboost-49.5 → funboost-49.7}/funboost/core/function_result_status_saver.py +15 -0
  19. {funboost-49.5 → funboost-49.7}/funboost/core/msg_result_getter.py +51 -1
  20. funboost-49.7/funboost/core/serialization.py +43 -0
  21. {funboost-49.5 → funboost-49.7}/funboost/factories/consumer_factory.py +1 -1
  22. {funboost-49.5 → funboost-49.7}/funboost/factories/publisher_factotry.py +1 -1
  23. {funboost-49.5 → funboost-49.7}/funboost/funboost_config_deafult.py +3 -2
  24. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/__pycache__/app.cpython-39.pyc +0 -0
  25. {funboost-49.5 → funboost-49.7}/funboost/publishers/base_publisher.py +16 -2
  26. {funboost-49.5 → funboost-49.7}/funboost/publishers/http_publisher.py +7 -1
  27. {funboost-49.5 → funboost-49.7}/funboost/publishers/tcp_publisher.py +10 -8
  28. {funboost-49.5 → funboost-49.7}/funboost/publishers/udp_publisher.py +8 -6
  29. {funboost-49.5 → funboost-49.7}/funboost/publishers/zeromq_publisher.py +5 -1
  30. {funboost-49.5 → funboost-49.7}/funboost/timing_job/apscheduler_use_redis_store.py +18 -4
  31. {funboost-49.5 → funboost-49.7}/funboost/timing_job/timing_push.py +3 -1
  32. {funboost-49.5 → funboost-49.7}/funboost/utils/ctrl_c_end.py +1 -1
  33. {funboost-49.5 → funboost-49.7}/funboost/utils/redis_manager.py +6 -4
  34. {funboost-49.5 → funboost-49.7/funboost.egg-info}/PKG-INFO +184 -102
  35. {funboost-49.5 → funboost-49.7}/funboost.egg-info/requires.txt +1 -1
  36. {funboost-49.5 → funboost-49.7}/setup.py +2 -2
  37. funboost-49.5/funboost/consumers/empty_consumer.py +0 -26
  38. funboost-49.5/funboost/core/serialization.py +0 -16
  39. {funboost-49.5 → funboost-49.7}/LICENSE +0 -0
  40. {funboost-49.5 → funboost-49.7}/MANIFEST.in +0 -0
  41. {funboost-49.5 → funboost-49.7}/funboost/__init__old.py +0 -0
  42. {funboost-49.5 → funboost-49.7}/funboost/__main__.py +0 -0
  43. {funboost-49.5 → funboost-49.7}/funboost/assist/__init__.py +0 -0
  44. {funboost-49.5 → funboost-49.7}/funboost/assist/celery_helper.py +0 -0
  45. {funboost-49.5 → funboost-49.7}/funboost/assist/dramatiq_helper.py +0 -0
  46. {funboost-49.5 → funboost-49.7}/funboost/assist/faststream_helper.py +0 -0
  47. {funboost-49.5 → funboost-49.7}/funboost/assist/huey_helper.py +0 -0
  48. {funboost-49.5 → funboost-49.7}/funboost/assist/rocketry_helper.py +0 -0
  49. {funboost-49.5 → funboost-49.7}/funboost/assist/rq_helper.py +0 -0
  50. {funboost-49.5 → funboost-49.7}/funboost/assist/rq_windows_worker.py +0 -0
  51. {funboost-49.5 → funboost-49.7}/funboost/assist/taskiq_helper.py +0 -0
  52. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/__init__.py +0 -0
  53. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/async_helper.py +0 -0
  54. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/async_pool_executor.py +0 -0
  55. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/backup/__init__.py +0 -0
  56. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
  57. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
  58. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
  59. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/backup/grok_async_pool.py +0 -0
  60. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/base_pool_type.py +0 -0
  61. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
  62. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
  63. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
  64. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
  65. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
  66. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
  67. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
  68. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
  69. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
  70. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
  71. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/pool_commons.py +0 -0
  72. {funboost-49.5 → funboost-49.7}/funboost/concurrent_pool/single_thread_executor.py +0 -0
  73. {funboost-49.5 → funboost-49.7}/funboost/consumers/__init__.py +0 -0
  74. {funboost-49.5 → funboost-49.7}/funboost/consumers/confirm_mixin.py +0 -0
  75. {funboost-49.5 → funboost-49.7}/funboost/consumers/dramatiq_consumer.py +0 -0
  76. {funboost-49.5 → funboost-49.7}/funboost/consumers/http_consumer000.py +0 -0
  77. {funboost-49.5 → funboost-49.7}/funboost/consumers/httpsqs_consumer.py +0 -0
  78. {funboost-49.5 → funboost-49.7}/funboost/consumers/huey_consumer.py +0 -0
  79. {funboost-49.5 → funboost-49.7}/funboost/consumers/kafka_consumer.py +0 -0
  80. {funboost-49.5 → funboost-49.7}/funboost/consumers/local_python_queue_consumer.py +0 -0
  81. {funboost-49.5 → funboost-49.7}/funboost/consumers/memory_deque_consumer.py +0 -0
  82. {funboost-49.5 → funboost-49.7}/funboost/consumers/mongomq_consumer.py +0 -0
  83. {funboost-49.5 → funboost-49.7}/funboost/consumers/mqtt_consumer.py +0 -0
  84. {funboost-49.5 → funboost-49.7}/funboost/consumers/nameko_consumer.py +0 -0
  85. {funboost-49.5 → funboost-49.7}/funboost/consumers/nats_consumer.py +0 -0
  86. {funboost-49.5 → funboost-49.7}/funboost/consumers/nsq_consumer.py +0 -0
  87. {funboost-49.5 → funboost-49.7}/funboost/consumers/peewee_conusmer.py +0 -0
  88. {funboost-49.5 → funboost-49.7}/funboost/consumers/persist_queue_consumer.py +0 -0
  89. {funboost-49.5 → funboost-49.7}/funboost/consumers/pulsar_consumer.py +0 -0
  90. {funboost-49.5 → funboost-49.7}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
  91. {funboost-49.5 → funboost-49.7}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
  92. {funboost-49.5 → funboost-49.7}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
  93. {funboost-49.5 → funboost-49.7}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
  94. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
  95. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_consumer.py +0 -0
  96. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_consumer_ack_able.py +0 -0
  97. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_consumer_ack_using_timeout.py +0 -0
  98. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_consumer_priority.py +0 -0
  99. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_consumer_simple.py +0 -0
  100. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_filter.py +0 -0
  101. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_pubsub_consumer.py +0 -0
  102. {funboost-49.5 → funboost-49.7}/funboost/consumers/redis_stream_consumer.py +0 -0
  103. {funboost-49.5 → funboost-49.7}/funboost/consumers/rocketmq_consumer.py +0 -0
  104. {funboost-49.5 → funboost-49.7}/funboost/consumers/rq_consumer.py +0 -0
  105. {funboost-49.5 → funboost-49.7}/funboost/consumers/sqlachemy_consumer.py +0 -0
  106. {funboost-49.5 → funboost-49.7}/funboost/consumers/txt_file_consumer.py +0 -0
  107. {funboost-49.5 → funboost-49.7}/funboost/contrib/__init__.py +0 -0
  108. {funboost-49.5 → funboost-49.7}/funboost/contrib/api_publish_msg.py +0 -0
  109. {funboost-49.5 → funboost-49.7}/funboost/contrib/django_db_deco.py +0 -0
  110. {funboost-49.5 → funboost-49.7}/funboost/contrib/queue2queue.py +0 -0
  111. {funboost-49.5 → funboost-49.7}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
  112. {funboost-49.5 → funboost-49.7}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
  113. {funboost-49.5 → funboost-49.7}/funboost/core/__init__.py +0 -0
  114. {funboost-49.5 → funboost-49.7}/funboost/core/active_cousumer_info_getter.py +0 -0
  115. {funboost-49.5 → funboost-49.7}/funboost/core/booster.py +0 -0
  116. {funboost-49.5 → funboost-49.7}/funboost/core/cli/__init__.py +0 -0
  117. {funboost-49.5 → funboost-49.7}/funboost/core/cli/discovery_boosters.py +0 -0
  118. {funboost-49.5 → funboost-49.7}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
  119. {funboost-49.5 → funboost-49.7}/funboost/core/cli/funboost_fire.py +0 -0
  120. {funboost-49.5 → funboost-49.7}/funboost/core/current_task.py +0 -0
  121. {funboost-49.5 → funboost-49.7}/funboost/core/fabric_deploy_helper.py +0 -0
  122. {funboost-49.5 → funboost-49.7}/funboost/core/funboost_config_getter.py +0 -0
  123. {funboost-49.5 → funboost-49.7}/funboost/core/funboost_time.py +0 -0
  124. {funboost-49.5 → funboost-49.7}/funboost/core/function_result_status_config.py +0 -0
  125. {funboost-49.5 → funboost-49.7}/funboost/core/helper_funs.py +0 -0
  126. {funboost-49.5 → funboost-49.7}/funboost/core/kill_remote_task.py +0 -0
  127. {funboost-49.5 → funboost-49.7}/funboost/core/lazy_impoter.py +0 -0
  128. {funboost-49.5 → funboost-49.7}/funboost/core/loggers.py +0 -0
  129. {funboost-49.5 → funboost-49.7}/funboost/core/muliti_process_enhance.py +0 -0
  130. {funboost-49.5 → funboost-49.7}/funboost/core/task_id_logger.py +0 -0
  131. {funboost-49.5 → funboost-49.7}/funboost/factories/__init__.py +0 -0
  132. {funboost-49.5 → funboost-49.7}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
  133. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/__pycache__/app.cpython-313.pyc +0 -0
  134. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  135. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/__pycache__/functions.cpython-313.pyc +0 -0
  136. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  137. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/__pycache__/functions.cpython-39.pyc +0 -0
  138. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/app.py +0 -0
  139. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/app_debug_start.py +0 -0
  140. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/functions.py +0 -0
  141. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/assets/css/custom.css +0 -0
  142. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
  143. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
  144. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/assets/js/custom.js +0 -0
  145. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
  146. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css/content_page_style.css +0 -0
  147. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css/style.css +0 -0
  148. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css +0 -0
  149. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/css/font-awesome.min.css +0 -0
  150. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/FontAwesome.otf +0 -0
  151. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.eot +0 -0
  152. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.svg +0 -0
  153. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf +0 -0
  154. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff +0 -0
  155. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
  156. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/select2/4.0.13/css/select2.min.css +0 -0
  157. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator.min.css +0 -0
  158. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/tabulator-tables@5.5.0/tabulator_bootstrap3.min.css +0 -0
  159. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/css/bootstrap.min.css +0 -0
  160. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.eot +0 -0
  161. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.svg +0 -0
  162. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.ttf +0 -0
  163. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff +0 -0
  164. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/css_cdn/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2 +0 -0
  165. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/images/bg.jpg +0 -0
  166. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/images/favicon.ico +0 -0
  167. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/images/password.png +0 -0
  168. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/images/tick.png +0 -0
  169. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/images/user.png +0 -0
  170. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js/bootstrap-datetimepicker.min.js +0 -0
  171. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js/echarts.min.js +0 -0
  172. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js/form-memory.js +0 -0
  173. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
  174. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js/moment-with-locales.min.js +0 -0
  175. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js/select2.min.js +0 -0
  176. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js_cdn/bootstrap/3.3.7/js/bootstrap.min.js +0 -0
  177. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js_cdn/chart.js +0 -0
  178. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/static/js_cdn/tabulator-tables@5.5.0/dist/js/tabulator.min.js +0 -0
  179. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/about.html +0 -0
  180. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/conusme_speed.html +0 -0
  181. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/fun_result_table.html +0 -0
  182. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/index.html +0 -0
  183. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/index_backup.html +0 -0
  184. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/login.html +0 -0
  185. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/queue_op.html +0 -0
  186. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/rpc_call.html +0 -0
  187. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/running_consumer_by_ip.html +0 -0
  188. {funboost-49.5 → funboost-49.7}/funboost/function_result_web/templates/running_consumer_by_queue_name.html +0 -0
  189. {funboost-49.5 → funboost-49.7}/funboost/publishers/__init__.py +0 -0
  190. {funboost-49.5 → funboost-49.7}/funboost/publishers/celery_publisher.py +0 -0
  191. {funboost-49.5 → funboost-49.7}/funboost/publishers/celery_publisher000.py +0 -0
  192. {funboost-49.5 → funboost-49.7}/funboost/publishers/confluent_kafka_publisher.py +0 -0
  193. {funboost-49.5 → funboost-49.7}/funboost/publishers/dramatiq_publisher.py +0 -0
  194. {funboost-49.5 → funboost-49.7}/funboost/publishers/empty_publisher.py +0 -0
  195. {funboost-49.5 → funboost-49.7}/funboost/publishers/faststream_publisher.py +0 -0
  196. {funboost-49.5 → funboost-49.7}/funboost/publishers/httpsqs_publisher.py +0 -0
  197. {funboost-49.5 → funboost-49.7}/funboost/publishers/huey_publisher.py +0 -0
  198. {funboost-49.5 → funboost-49.7}/funboost/publishers/kafka_publisher.py +0 -0
  199. {funboost-49.5 → funboost-49.7}/funboost/publishers/kombu_publisher.py +0 -0
  200. {funboost-49.5 → funboost-49.7}/funboost/publishers/local_python_queue_publisher.py +0 -0
  201. {funboost-49.5 → funboost-49.7}/funboost/publishers/meomory_deque_publisher.py +0 -0
  202. {funboost-49.5 → funboost-49.7}/funboost/publishers/mongomq_publisher.py +0 -0
  203. {funboost-49.5 → funboost-49.7}/funboost/publishers/mqtt_publisher.py +0 -0
  204. {funboost-49.5 → funboost-49.7}/funboost/publishers/nameko_publisher.py +0 -0
  205. {funboost-49.5 → funboost-49.7}/funboost/publishers/nats_publisher.py +0 -0
  206. {funboost-49.5 → funboost-49.7}/funboost/publishers/nsq_publisher.py +0 -0
  207. {funboost-49.5 → funboost-49.7}/funboost/publishers/peewee_publisher.py +0 -0
  208. {funboost-49.5 → funboost-49.7}/funboost/publishers/persist_queue_publisher.py +0 -0
  209. {funboost-49.5 → funboost-49.7}/funboost/publishers/pulsar_publisher.py +0 -0
  210. {funboost-49.5 → funboost-49.7}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
  211. {funboost-49.5 → funboost-49.7}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
  212. {funboost-49.5 → funboost-49.7}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
  213. {funboost-49.5 → funboost-49.7}/funboost/publishers/redis_publisher.py +0 -0
  214. {funboost-49.5 → funboost-49.7}/funboost/publishers/redis_publisher_lpush.py +0 -0
  215. {funboost-49.5 → funboost-49.7}/funboost/publishers/redis_publisher_priority.py +0 -0
  216. {funboost-49.5 → funboost-49.7}/funboost/publishers/redis_publisher_simple.py +0 -0
  217. {funboost-49.5 → funboost-49.7}/funboost/publishers/redis_pubsub_publisher.py +0 -0
  218. {funboost-49.5 → funboost-49.7}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
  219. {funboost-49.5 → funboost-49.7}/funboost/publishers/redis_stream_publisher.py +0 -0
  220. {funboost-49.5 → funboost-49.7}/funboost/publishers/rocketmq_publisher.py +0 -0
  221. {funboost-49.5 → funboost-49.7}/funboost/publishers/rq_publisher.py +0 -0
  222. {funboost-49.5 → funboost-49.7}/funboost/publishers/sqla_queue_publisher.py +0 -0
  223. {funboost-49.5 → funboost-49.7}/funboost/publishers/txt_file_publisher.py +0 -0
  224. {funboost-49.5 → funboost-49.7}/funboost/queues/__init__.py +0 -0
  225. {funboost-49.5 → funboost-49.7}/funboost/queues/memory_queues_map.py +0 -0
  226. {funboost-49.5 → funboost-49.7}/funboost/queues/peewee_queue.py +0 -0
  227. {funboost-49.5 → funboost-49.7}/funboost/queues/sqla_queue.py +0 -0
  228. {funboost-49.5 → funboost-49.7}/funboost/set_frame_config.py +0 -0
  229. {funboost-49.5 → funboost-49.7}/funboost/timing_job/__init__.py +0 -0
  230. {funboost-49.5 → funboost-49.7}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
  231. {funboost-49.5 → funboost-49.7}/funboost/timing_job/timing_job_base.py +0 -0
  232. {funboost-49.5 → funboost-49.7}/funboost/utils/__init__.py +0 -0
  233. {funboost-49.5 → funboost-49.7}/funboost/utils/apscheduler_monkey.py +0 -0
  234. {funboost-49.5 → funboost-49.7}/funboost/utils/block_exit.py +0 -0
  235. {funboost-49.5 → funboost-49.7}/funboost/utils/bulk_operation.py +0 -0
  236. {funboost-49.5 → funboost-49.7}/funboost/utils/class_utils.py +0 -0
  237. {funboost-49.5 → funboost-49.7}/funboost/utils/class_utils2.py +0 -0
  238. {funboost-49.5 → funboost-49.7}/funboost/utils/custom_pysnooper.py +0 -0
  239. {funboost-49.5 → funboost-49.7}/funboost/utils/decorators.py +0 -0
  240. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages/__init__.py +0 -0
  241. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
  242. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
  243. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
  244. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
  245. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
  246. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
  247. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
  248. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
  249. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-313.pyc +0 -0
  250. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
  251. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
  252. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
  253. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-313.pyc +0 -0
  254. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
  255. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
  256. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
  257. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
  258. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
  259. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
  260. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
  261. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
  262. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
  263. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
  264. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
  265. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
  266. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
  267. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
  268. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
  269. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
  270. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
  271. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
  272. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
  273. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
  274. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
  275. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
  276. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
  277. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
  278. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
  279. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
  280. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
  281. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
  282. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
  283. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
  284. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
  285. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
  286. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
  287. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
  288. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
  289. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
  290. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
  291. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
  292. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
  293. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
  294. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
  295. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
  296. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
  297. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
  298. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
  299. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
  300. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
  301. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
  302. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
  303. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
  304. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
  305. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
  306. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
  307. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc2222.py +0 -0
  308. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
  309. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
  310. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
  311. {funboost-49.5 → funboost-49.7}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
  312. {funboost-49.5 → funboost-49.7}/funboost/utils/develop_log.py +0 -0
  313. {funboost-49.5 → funboost-49.7}/funboost/utils/expire_lock.py +0 -0
  314. {funboost-49.5 → funboost-49.7}/funboost/utils/func_timeout/StoppableThread.py +0 -0
  315. {funboost-49.5 → funboost-49.7}/funboost/utils/func_timeout/__init__.py +0 -0
  316. {funboost-49.5 → funboost-49.7}/funboost/utils/func_timeout/dafunc.py +0 -0
  317. {funboost-49.5 → funboost-49.7}/funboost/utils/func_timeout/exceptions.py +0 -0
  318. {funboost-49.5 → funboost-49.7}/funboost/utils/func_timeout/py2_raise.py +0 -0
  319. {funboost-49.5 → funboost-49.7}/funboost/utils/func_timeout/py3_raise.py +0 -0
  320. {funboost-49.5 → funboost-49.7}/funboost/utils/json_helper.py +0 -0
  321. {funboost-49.5 → funboost-49.7}/funboost/utils/mongo_util.py +0 -0
  322. {funboost-49.5 → funboost-49.7}/funboost/utils/monkey_color_log.py +0 -0
  323. {funboost-49.5 → funboost-49.7}/funboost/utils/monkey_patches.py +0 -0
  324. {funboost-49.5 → funboost-49.7}/funboost/utils/mqtt_util.py +0 -0
  325. {funboost-49.5 → funboost-49.7}/funboost/utils/paramiko_util.py +0 -0
  326. {funboost-49.5 → funboost-49.7}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
  327. {funboost-49.5 → funboost-49.7}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
  328. {funboost-49.5 → funboost-49.7}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
  329. {funboost-49.5 → funboost-49.7}/funboost/utils/pysnooper_ydf/utils.py +0 -0
  330. {funboost-49.5 → funboost-49.7}/funboost/utils/pysnooper_ydf/variables.py +0 -0
  331. {funboost-49.5 → funboost-49.7}/funboost/utils/rabbitmq_factory.py +0 -0
  332. {funboost-49.5 → funboost-49.7}/funboost/utils/redis_manager_old.py +0 -0
  333. {funboost-49.5 → funboost-49.7}/funboost/utils/resource_monitoring.py +0 -0
  334. {funboost-49.5 → funboost-49.7}/funboost/utils/restart_python.py +0 -0
  335. {funboost-49.5 → funboost-49.7}/funboost/utils/simple_data_class.py +0 -0
  336. {funboost-49.5 → funboost-49.7}/funboost/utils/str_utils.py +0 -0
  337. {funboost-49.5 → funboost-49.7}/funboost/utils/time_util.py +0 -0
  338. {funboost-49.5 → funboost-49.7}/funboost/utils/times/__init__.py +0 -0
  339. {funboost-49.5 → funboost-49.7}/funboost/utils/times/version.py +0 -0
  340. {funboost-49.5 → funboost-49.7}/funboost/utils/un_strict_json_dumps.py +0 -0
  341. {funboost-49.5 → funboost-49.7}/funboost.egg-info/SOURCES.txt +0 -0
  342. {funboost-49.5 → funboost-49.7}/funboost.egg-info/dependency_links.txt +0 -0
  343. {funboost-49.5 → funboost-49.7}/funboost.egg-info/entry_points.txt +0 -0
  344. {funboost-49.5 → funboost-49.7}/funboost.egg-info/top_level.txt +0 -0
  345. {funboost-49.5 → funboost-49.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 49.5
3
+ Version: 49.7
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
@@ -24,30 +24,104 @@ Classifier: Programming Language :: Python :: 3.10
24
24
  Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Programming Language :: Python :: 3.13
27
+ Classifier: Programming Language :: Python :: 3.14
27
28
  Classifier: Programming Language :: Python :: 3 :: Only
28
29
  Classifier: Topic :: Software Development :: Libraries
29
30
  Description-Content-Type: text/markdown
31
+ License-File: LICENSE
32
+ Requires-Dist: nb_log>=13.9
33
+ Requires-Dist: nb_libs>=1.9
34
+ Requires-Dist: nb_time>=2.4
35
+ Requires-Dist: pymongo>=4.6.3
36
+ Requires-Dist: AMQPStorm==2.10.6
37
+ Requires-Dist: rabbitpy==2.0.1
38
+ Requires-Dist: decorator==5.1.1
39
+ Requires-Dist: tomorrow3==1.1.0
40
+ Requires-Dist: persist-queue>=0.4.2
41
+ Requires-Dist: apscheduler<4.0.0,>=3.10.1
42
+ Requires-Dist: pikav0
43
+ Requires-Dist: pikav1
44
+ Requires-Dist: redis2
45
+ Requires-Dist: redis3
46
+ Requires-Dist: redis5
47
+ Requires-Dist: redis
48
+ Requires-Dist: setuptools_rust
49
+ Requires-Dist: fabric2>=2.6.0
50
+ Requires-Dist: nb_filelock
51
+ Requires-Dist: pysnooper
52
+ Requires-Dist: deprecated
53
+ Requires-Dist: cryptography
54
+ Requires-Dist: auto_run_on_remote
55
+ Requires-Dist: frozenlist
56
+ Requires-Dist: fire
57
+ Requires-Dist: pydantic
58
+ Requires-Dist: orjson
59
+ Requires-Dist: async-timeout
60
+ Requires-Dist: typing-extensions
30
61
  Provides-Extra: all
31
- Provides-Extra: extra_brokers
62
+ Requires-Dist: confluent_kafka==1.7.0; extra == "all"
63
+ Requires-Dist: pulsar-client==3.1.0; python_version >= "3.7" and extra == "all"
64
+ Requires-Dist: celery; extra == "all"
65
+ Requires-Dist: flower; extra == "all"
66
+ Requires-Dist: nameko==2.14.1; extra == "all"
67
+ Requires-Dist: sqlalchemy==1.4.13; extra == "all"
68
+ Requires-Dist: sqlalchemy_utils==0.36.1; extra == "all"
69
+ Requires-Dist: dramatiq==1.14.2; extra == "all"
70
+ Requires-Dist: huey==2.4.5; extra == "all"
71
+ Requires-Dist: rq==1.15.0; extra == "all"
72
+ Requires-Dist: kombu; extra == "all"
73
+ Requires-Dist: elasticsearch; extra == "all"
74
+ Requires-Dist: gnsq==1.0.1; extra == "all"
75
+ Requires-Dist: psutil; extra == "all"
76
+ Requires-Dist: peewee==3.17.3; extra == "all"
77
+ Requires-Dist: nats-python; extra == "all"
78
+ Requires-Dist: aiohttp==3.8.3; extra == "all"
79
+ Requires-Dist: paho-mqtt; extra == "all"
80
+ Requires-Dist: rocketmq; extra == "all"
81
+ Requires-Dist: zmq; extra == "all"
82
+ Requires-Dist: pyzmq; extra == "all"
83
+ Requires-Dist: kafka-python==2.0.2; extra == "all"
84
+ Requires-Dist: eventlet==0.33.3; extra == "all"
85
+ Requires-Dist: gevent==22.10.2; extra == "all"
86
+ Requires-Dist: flask; extra == "all"
87
+ Requires-Dist: flask_bootstrap; extra == "all"
88
+ Requires-Dist: flask_wtf; extra == "all"
89
+ Requires-Dist: wtforms; extra == "all"
90
+ Requires-Dist: flask_login; extra == "all"
91
+ Provides-Extra: extra-brokers
92
+ Requires-Dist: confluent_kafka==1.7.0; extra == "extra-brokers"
93
+ Requires-Dist: pulsar-client==3.1.0; python_version >= "3.7" and extra == "extra-brokers"
94
+ Requires-Dist: celery; extra == "extra-brokers"
95
+ Requires-Dist: flower; extra == "extra-brokers"
96
+ Requires-Dist: nameko==2.14.1; extra == "extra-brokers"
97
+ Requires-Dist: sqlalchemy==1.4.13; extra == "extra-brokers"
98
+ Requires-Dist: sqlalchemy_utils==0.36.1; extra == "extra-brokers"
99
+ Requires-Dist: dramatiq==1.14.2; extra == "extra-brokers"
100
+ Requires-Dist: huey==2.4.5; extra == "extra-brokers"
101
+ Requires-Dist: rq==1.15.0; extra == "extra-brokers"
102
+ Requires-Dist: kombu; extra == "extra-brokers"
103
+ Requires-Dist: elasticsearch; extra == "extra-brokers"
104
+ Requires-Dist: gnsq==1.0.1; extra == "extra-brokers"
105
+ Requires-Dist: psutil; extra == "extra-brokers"
106
+ Requires-Dist: peewee==3.17.3; extra == "extra-brokers"
107
+ Requires-Dist: nats-python; extra == "extra-brokers"
108
+ Requires-Dist: aiohttp==3.8.3; extra == "extra-brokers"
109
+ Requires-Dist: paho-mqtt; extra == "extra-brokers"
110
+ Requires-Dist: rocketmq; extra == "extra-brokers"
111
+ Requires-Dist: zmq; extra == "extra-brokers"
112
+ Requires-Dist: pyzmq; extra == "extra-brokers"
113
+ Requires-Dist: kafka-python==2.0.2; extra == "extra-brokers"
114
+ Requires-Dist: eventlet==0.33.3; extra == "extra-brokers"
115
+ Requires-Dist: gevent==22.10.2; extra == "extra-brokers"
32
116
  Provides-Extra: flask
33
- License-File: LICENSE
34
-
35
-
117
+ Requires-Dist: flask; extra == "flask"
118
+ Requires-Dist: flask_bootstrap; extra == "flask"
119
+ Requires-Dist: flask_wtf; extra == "flask"
120
+ Requires-Dist: wtforms; extra == "flask"
121
+ Requires-Dist: flask_login; extra == "flask"
36
122
 
37
123
  # 1.python万能分布式函数调度框架简funboost简介
38
124
 
39
- [//]: # (Stargazers:)
40
-
41
- [//]: # ()
42
- [//]: # ([![Stargazers repo roster for @ydf0509/funboost]&#40;https://reporoster.com/stars/ydf0509/funboost&#41;]&#40;https://github.com/ydf0509/funboost/stargazers&#41;)
43
-
44
- [//]: # ()
45
- [//]: # (Forkers:)
46
-
47
- [//]: # ()
48
- [//]: # ([![Forkers repo roster for @ydf0509/funboost]&#40;https://reporoster.com/forks/ydf0509/funboost&#41;]&#40;https://github.com/ydf0509/funboost/network/members&#41;)
49
-
50
-
51
125
  <pre style="color: greenyellow;background-color: #0c1119; font-size: medium;">
52
126
  pip install funboost ,python全功能分布式函数调度框架。 demo用法例子见文档1.3
53
127
 
@@ -73,9 +147,9 @@ Broker。funboost源码高扩展性的设计,造成“万物皆可为Broker”
73
147
  框架对代码没有入侵,可以加到任意已有项目而对项目python文件目录结构0要求,
74
148
  不像 celery django scrapy 这样的框架,要从一开始就开始规划好项目目录结构,如果不想用框架了,
75
149
  或者想改变使用其他框架框架,那么已经所写的代码组织形式就几乎成了废物,需要大改特改.
76
- 但是funboost完全不会这样,就算是加上或去掉@boost装饰器,对你的项目影响为0,用户照常使用,
150
+ 但是funboost完全不会这样,不管是加上还是去掉@boost装饰器,对你的项目影响为0,用户照常使用,
77
151
  所以用户可以对任意项目,任意时候,引入使用funboost或者去掉使用funboost,代码组织形式不需要发生变化.
78
- (即使不想用funboost了,也不需要亲自去掉@boost装饰器,因为函数有@boost装饰器对函数自身的直接调用运行没有任何影响,
152
+ (即使不想用funboost了,也不需要亲自去掉@boost装饰器,因为函数上面有@boost装饰器对函数自身的直接调用运行没有任何影响,
79
153
  用户照样可以直接例如 fun(x,y)是直接运行函数 , fun.push(x,y) 才是发送到消息队列)
80
154
 
81
155
  通过funboost web manager 管理系统,支持全面 查看 监控 管理 funboost的任务消费。
@@ -103,14 +177,13 @@ funboost只有一个@boost装饰器,@boost入参能自动补全,更重要的
103
177
  因为funboost非常注重代码补全提示,所以不存在上面celery的那些复杂高难度缺点。
104
178
  ```
105
179
 
106
-
107
180
  funboost的旧框架名字是function_scheduling_distributed_framework , 关系和兼容性见1.0.3介绍。
108
181
  旧框架地址: [https://github.com/ydf0509/distributed_framework](https://github.com/ydf0509/distributed_framework)
109
182
 
110
-
111
183
  ## 1.0 github地址和文档地址
112
184
 
113
185
  ### 1.0.1 [分布式函数调度框架文档地址 ](https://funboost.readthedocs.io/zh-cn/latest/index.html)
186
+
114
187
  [查看分布式函数调度框架文档 https://funboost.readthedocs.io/zh-cn/latest/index.html](https://funboost.readthedocs.io/zh-cn/latest/index.html)
115
188
 
116
189
  文档很长,大部分都是讲原理和对比各种框架。但是用户只需要学习1.3这1个例子就能掌握了。因为其他例子只是 @boost的 BoosterParams 里面的控制入参换了一下。
@@ -120,6 +193,7 @@ funboost的旧框架名字是function_scheduling_distributed_framework , 关系
120
193
  funboost 框架和一般的框架不一样,因为只有一行代码需要掌握,绝对不是要求用户先精通框架本身才能自由发挥。
121
194
 
122
195
  #### [1.python万能分布式函数调度框架简funboost简介](https://funboost.readthedocs.io/zh-cn/latest/articles/c1.html)
196
+
123
197
  #### [2. funboost对比celery框架](https://funboost.readthedocs.io/zh-cn/latest/articles/c2.html)
124
198
 
125
199
  #### [3.funboost框架详细介绍](https://funboost.readthedocs.io/zh-cn/latest/articles/c3.html)
@@ -146,7 +220,6 @@ funboost 框架和一般的框架不一样,因为只有一行代码需要掌
146
220
 
147
221
  #### [13.启动 funboost web manager,查看消费结果和队列管理](https://funboost.readthedocs.io/zh-cn/latest/articles/c13.html)
148
222
 
149
-
150
223
  #### [funboost依赖的nb_log日志文档 https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c9.html#id2](https://nb-log-doc.readthedocs.io/zh_CN/latest/articles/c9.html#id2)
151
224
 
152
225
  ```
@@ -162,14 +235,8 @@ funboost 框架和一般的框架不一样,因为只有一行代码需要掌
162
235
  ```
163
236
 
164
237
  ### 1.0.2 [分布式函数调度框架github地址](https://github.com/ydf0509/funboost)
165
- [查看分布式函数调度框架github项目](https://github.com/ydf0509/funboost)
166
-
167
- [//]: # (### 1.0.3 [分布式函数调度框架qq群]&#40;https://qm.qq.com/cgi-bin/qm/qr?k=unA_o_L3sv5yushJzYGUTAwSzZ7GhUhq&jump_from=webapi&#41;)
168
-
169
- [//]: # (现在新建一个qq群 189603256)
170
-
171
- [//]:# ([点击加入 python万能分布式函数调度框架qq群]&#40;https://qm.qq.com/cgi-bin/qm/qr?k=unA_o_L3sv5yushJzYGUTAwSzZ7GhUhq&jump_from=webapi&#41;)
172
238
 
239
+ [查看分布式函数调度框架github项目](https://github.com/ydf0509/funboost)
173
240
 
174
241
  ### 1.0.3 funboost 框架 和 function_scheduling_distributed_framework 框架 关系说明
175
242
 
@@ -177,10 +244,7 @@ funboost 框架和一般的框架不一样,因为只有一行代码需要掌
177
244
  funboost 是 function_scheduling_distributed_framework的包名更新版本
178
245
  ```
179
246
 
180
-
181
-
182
- <span style="font-size:15px">旧框架地址:<span><a href="https://github.com/ydf0509/distributed_framework" style="font-size: 15px">function_scheduling_distributed_framework框架地址链接</a>
183
-
247
+ `<span style="font-size:15px">`旧框架地址:`<span><a href="https://github.com/ydf0509/distributed_framework" style="font-size: 15px">`function_scheduling_distributed_framework框架地址链接 `</a>`
184
248
 
185
249
  ## 1.1 安装方式
186
250
 
@@ -192,39 +256,26 @@ pip install funboost --upgrade
192
256
 
193
257
  ## 1.2 框架功能介绍
194
258
 
195
- 分布式函数调度框架,支持5种并发模式,30+种消息中间件,30种任务控制功能。<br>
259
+ 分布式函数调度框架,支持5种并发模式,30+种消息中间件,30种任务控制功能。`<br>`
196
260
  用途概念就是常规经典的 生产者 + 消息队列中间件 + 消费者 编程思想。
197
261
 
198
262
  有了这个框架,用户再也无需亲自手写操作进程、线程、协程的并发的代码了。
199
263
 
200
264
  有了这个框架,用户再也无需亲自手写操作redis rabbitmq socket kafka celery nameko了。
201
265
 
202
- [//]: # ([![sgV2xP.png]&#40;https://z3.ax1x.com/2021/01/19/sgV2xP.png&#41;]&#40;https://imgtu.com/i/sgV2xP&#41;)
203
-
204
- [//]: # ()
205
- [//]: # ([img-46.png]&#40;https://postimg.cc/hfW0VhCX&#41;)
206
-
207
266
  funboost示图:
208
- <a href="https://imgse.com/i/pkFFghj"><img src="https://s21.ax1x.com/2024/04/29/pkFFghj.png" alt="pkFFghj.png" border="0" /></a>
209
-
210
- [//]: # ([![img-46.png]&#40;https://i.postimg.cc/tC7mQxWN/img-46.png&#41;]&#40;https://postimg.cc/hfW0VhCX&#41;)
211
-
212
- [//]: # (就是最普通的生产者消费者流程图)
213
-
214
- [//]: # (![]&#40;https://i.niupic.com/images/2023/12/18/dVaP.png&#41;)
267
+ `<a href="https://imgse.com/i/pkFFghj"><img src="https://s21.ax1x.com/2024/04/29/pkFFghj.png" alt="pkFFghj.png" border="0" />``</a>`
215
268
 
216
269
  也就是这种非常普通的流程图,一样的意思
217
270
 
218
- <a href="https://imgse.com/i/pkFFcNQ"><img src="https://s21.ax1x.com/2024/04/29/pkFFcNQ.png" alt="pkFFcNQ.png" border="0" /></a>
271
+ `<a href="https://imgse.com/i/pkFFcNQ"><img src="https://s21.ax1x.com/2024/04/29/pkFFcNQ.png" alt="pkFFcNQ.png" border="0" />``</a>`
219
272
 
220
273
  ### 1.2.1 框架支持5种并发模式
221
274
 
222
- <div style=" font-size: xx-large; font-family: 黑体,serif; "> threading <span style="font-size: medium">(使用的是可变线程池,可以智能自动缩小和扩大线程数量,也可以运行async def的函数) </span> </div>
223
-
275
+ <div style=" font-size: xx-large; font-family: 黑体,serif; "> threading <span style="font-size: medium">(使用的是可变线程池,可以智能自动缩小和扩大线程数量,也可以运行async def的函数) </span> </div>
224
276
 
225
277
  <div style=" font-size: xx-large; font-family: 黑体,serif; "> gevent </div>
226
278
 
227
-
228
279
  <div style="font-size: xx-large; font-family: 黑体,serif; "> eventlet </div>
229
280
 
230
281
  <div style="font-size: xx-large; font-family: 黑体,serif; "> asyncio <span style="font-size: medium">(框架可以直接支持async 定义的携程函数作为任务,celery不支持) </span> </div>
@@ -246,6 +297,7 @@ funboost示图:
246
297
  以下两种方式,都是10线程加python内存queue方式运行f函数,有了此框架,用户无需代码手写手动操作线程 协程 asyncio 进程 来并发。
247
298
 
248
299
  1)手动开启线程池方式
300
+
249
301
  ```python
250
302
  import time
251
303
  from concurrent.futures import ThreadPoolExecutor
@@ -265,6 +317,7 @@ if __name__ == '__main__':
265
317
  ```
266
318
 
267
319
  2)funboost 使用内存队列,设置10线程并发
320
+
268
321
  ```python
269
322
  import time
270
323
  from funboost import BoosterParams, BrokerEnum
@@ -283,17 +336,15 @@ if __name__ == '__main__':
283
336
 
284
337
  ```
285
338
 
286
-
287
339
  ### 1.2.2 框架支持30种中间件或三方框架
288
340
 
289
341
  框架支持 rabbitmq redis python自带的queue.Queue sqlite sqlachemy kafka pulsar mongodb 直接socket celery nameko 等作为消息中间件。
290
342
 
291
343
  同时此框架也支持操作 kombu 库作为中间件,所以此框架能够支持的中间件类型只会比celery更多。
292
344
 
293
- 框架支持的中间件种类大全和选型见文档3.1章节的介绍:
294
-
295
- [3.1 各种中间件选择的场景和优势](https://funboost.readthedocs.io/zh-cn/latest/articles/c3.html#id2)
345
+ 框架支持的中间件种类大全和选型见文档3.1章节的介绍:
296
346
 
347
+ [3.1 各种中间件选择的场景和优势](https://funboost.readthedocs.io/zh-cn/latest/articles/c3.html#id2)
297
348
 
298
349
  ### 1.2.3 框架对任务支持30种控制功能。
299
350
 
@@ -315,6 +366,7 @@ python通用分布式函数调度框架。适用场景范围广泛, 框架非
315
366
  </pre>
316
367
 
317
368
  20种控制功能包括:
369
+
318
370
  <pre style="color: #A0A000">
319
371
  分布式:
320
372
  支持数十种最负盛名的消息中间件.(除了常规mq,还包括用不同形式的如 数据库 磁盘文件 redis等来模拟消息队列)
@@ -322,16 +374,16 @@ python通用分布式函数调度框架。适用场景范围广泛, 框架非
322
374
  并发:
323
375
  支持threading gevent eventlet asyncio 单线程 5种并发模式 叠加 多进程。
324
376
  多进程不是和前面四种模式平行的,是叠加的,例如可以是 多进程 + 协程,多进程 + 多线程。
325
-
377
+
326
378
  控频限流:
327
379
  例如十分精确的指定1秒钟运行30次函数或者0.02次函数(无论函数需要随机运行多久时间,都能精确控制到指定的消费频率;
328
-
380
+
329
381
  分布式控频限流:
330
382
  例如一个脚本反复启动多次或者多台机器多个容器在运行,如果要严格控制总的qps,能够支持分布式控频限流。
331
-
383
+
332
384
  任务持久化:
333
385
  消息队列中间件天然支持
334
-
386
+
335
387
  断点接续运行:
336
388
  无惧反复重启代码,造成任务丢失。消息队列的持久化 + 消费确认机制 做到不丢失一个消息
337
389
  (此框架很重视消息的万无一失,就是执行函数的机器支持在任何时候随时肆无忌惮反复粗暴拉电闸断电,或者强制硬关机,
@@ -342,64 +394,64 @@ python通用分布式函数调度框架。适用场景范围广泛, 框架非
342
394
  分布式函数调度框架的消费确认机制,保证函数运行完了才确认消费,正在运行突然强制关闭进程不会丢失一个消息,
343
395
  下次启动还会消费或者被别的机器消费。
344
396
  此框架的消息万无一失特性,不仅支持rabbbitmq因为原生支持,也支持redis,框架对redis的实现机制是因为客户端加了一层保障)。
345
-
397
+
346
398
  定时:
347
399
  可以按时间间隔、按指定时间执行一次、按指定时间执行多次,使用的是apscheduler包的方式。
348
-
400
+
349
401
  延时任务:
350
402
  例如规定任务发布后,延迟60秒执行,或者规定18点执行。这个概念和定时任务有一些不同。
351
-
403
+
352
404
  指定时间不运行:
353
405
  例如,有些任务你不想在白天运行,可以只在晚上的时间段运行
354
-
406
+
355
407
  消费确认:
356
408
  这是最为重要的一项功能之一,有了这才能肆无忌惮的任性反复重启代码也不会丢失一个任务。
357
409
  (常规的手写 redis.lpush + redis.blpop,然后并发的运行取出来的消息,随意关闭重启代码瞬间会丢失大量任务,
358
410
  那种有限的 断点接续 完全不可靠,根本不敢随意重启代码)
359
-
411
+
360
412
  立即重试指定次数:
361
413
  当函数运行出错,会立即重试指定的次数,达到最大次重试数后就确认消费了
362
-
414
+
363
415
  重新入队:
364
416
  在消费函数内部主动抛出一个特定类型的异常ExceptionForRequeue后,消息重新返回消息队列
365
-
417
+
366
418
  超时杀死:
367
419
  例如在函数运行时间超过10秒时候,将此运行中的函数kill
368
-
420
+
369
421
  计算消费次数速度:
370
422
  实时计算单个进程1分钟的消费次数,在日志中显示;当开启函数状态持久化后可在web页面查看消费次数
371
-
423
+
372
424
  预估消费时间:
373
425
  根据前1分钟的消费次数,按照队列剩余的消息数量来估算剩余的所需时间
374
-
426
+
375
427
  函数运行日志记录:
376
428
  使用自己设计开发的 控制台五彩日志(根据日志严重级别显示成五种颜色;使用了可跳转点击日志模板)
377
429
  + 多进程安全切片的文件日志 + 可选的kafka elastic日志
378
-
430
+
379
431
  任务过滤:
380
432
  例如求和的add函数,已经计算了1 + 2,再次发布1 + 2的任务到消息中间件,可以让框架跳过执行此任务。
381
433
  任务过滤的原理是使用的是函数入参判断是否是已近执行过来进行过滤。
382
-
434
+
383
435
  任务过滤有效期缓存:
384
436
  例如查询深圳明天的天气,可以设置任务过滤缓存30分钟,30分钟内查询过深圳的天气,则不再查询。
385
437
  30分钟以外无论是否查询过深圳明天的天气,则执行查询。
386
-
438
+
387
439
  任务过期丢弃:
388
440
  例如消息是15秒之前发布的,可以让框架丢弃此消息不执行,防止消息堆积,
389
441
  在消息可靠性要求不高但实时性要求高的高并发互联网接口中使用
390
-
442
+
391
443
  函数状态和结果持久化:
392
444
  可以分别选择函数状态和函数结果持久化到mongodb,使用的是短时间内的离散mongo任务自动聚合成批量
393
445
  任务后批量插入,尽可能的减少了插入次数
394
-
446
+
395
447
  消费状态实时可视化:
396
448
  在页面上按时间倒序实时刷新函数消费状态,包括是否成功 出错的异常类型和异常提示
397
449
  重试运行次数 执行函数的机器名字+进程id+python脚本名字 函数入参 函数结果 函数运行消耗时间等
398
-
450
+
399
451
  消费次数和速度生成统计表可视化:
400
452
  生成echarts统计图,主要是统计最近60秒每秒的消费次数、最近60分钟每分钟的消费次数
401
453
  最近24小时每小时的消费次数、最近10天每天的消费次数
402
-
454
+
403
455
  rpc:
404
456
  生产端(或叫发布端)获取消费结果。各个发布端对消费结果进行不同步骤的后续处理更灵活,而不是让消费端对消息的处理一干到底。
405
457
 
@@ -415,7 +467,7 @@ python通用分布式函数调度框架。适用场景范围广泛, 框架非
415
467
 
416
468
  远程杀死(取消)任务:
417
469
  支持在发布端杀死正在运行的消息,发送杀死命令时候对还未取出的消息则放弃运行消息。
418
-
470
+
419
471
  funboost支持命令行操作:
420
472
  使用fire实现的命令行,见文档第12章
421
473
 
@@ -424,15 +476,14 @@ python通用分布式函数调度框架。适用场景范围广泛, 框架非
424
476
 
425
477
  </pre>
426
478
 
427
-
428
479
  关于稳定性和性能,一句话概括就是直面百万c端用户(包括app和小程序), 已经连续超过三个季度稳定高效运行无事故,从没有出现过假死、崩溃、内存泄漏等问题。 windows和linux行为100%一致,不会像celery一样,相同代码前提下,很多功能在win上不能运行或出错。
429
480
 
430
-
431
481
  ## 1.3 框架使用例子
432
482
 
433
483
  使用之前先学习 PYTHONPATH的概念 [https://github.com/ydf0509/pythonpathdemo](https://github.com/ydf0509/pythonpathdemo)
434
484
 
435
485
  win cmd和linux 运行时候,设置 PYTHONPATH 为项目根目录,是为了自动生成或读取到项目根目录下的 funboost_config.py文件作为配置。
486
+
436
487
  ```
437
488
  以下这只是简单求和例子,实际情况换成任意函数里面写任意逻辑,框架可没有规定只能用于 求和函数 的自动调度并发。
438
489
  而是根据实际情况函数的参数个数、函数的内部逻辑功能,全部都由用户自定义,函数里面想写什么就写什么,想干什么就干什么,极端自由。
@@ -442,6 +493,8 @@ win cmd和linux 运行时候,设置 PYTHONPATH 为项目根目录,是为了
442
493
  有一点要说明的是框架的消息中间件的ip 端口 密码 等配置是在你第一次运行代码时候,在你当前项目的根目录下生成的 funboost_config.py 按需设置。
443
494
  ```
444
495
 
496
+ ### 1.3.1 funboost最简单例子
497
+
445
498
  ```python
446
499
  import time
447
500
  from funboost import boost, BrokerEnum,BoosterParams
@@ -481,14 +534,11 @@ if __name__ == "__main__":
481
534
 
482
535
  控制台运行截图:
483
536
 
484
- <a href="https://imgse.com/i/pkFkP4H"><img src="https://s21.ax1x.com/2024/04/29/pkFkP4H.png" alt="pkFkP4H.png" border="0" /></a>
485
-
486
-
487
- <a href="https://imgse.com/i/pkFkCUe"><img src="https://s21.ax1x.com/2024/04/29/pkFkCUe.png" alt="pkFkCUe.png" border="0" /></a>
537
+ `<a href="https://imgse.com/i/pkFkP4H"><img src="https://s21.ax1x.com/2024/04/29/pkFkP4H.png" alt="pkFkP4H.png" border="0" />``</a>`
488
538
 
539
+ `<a href="https://imgse.com/i/pkFkCUe"><img src="https://s21.ax1x.com/2024/04/29/pkFkCUe.png" alt="pkFkCUe.png" border="0" />``</a>`
489
540
 
490
-
491
- ## 1.3.2 funboost集中演示一个功能更多的综合例子
541
+ ### 1.3.2 funboost集中演示一个功能更多的综合例子
492
542
 
493
543
  ```python
494
544
 
@@ -509,7 +559,7 @@ class MyBoosterParams(BoosterParams): # 自定义的参数类,继承BoosterPa
509
559
  max_retry_times: int = 3
510
560
  concurrent_mode: str = ConcurrentModeEnum.THREADING
511
561
 
512
-
562
+
513
563
  @boost(MyBoosterParams(queue_name='s1_queue', qps=1,
514
564
  # do_task_filtering=True, # 可开启任务过滤,防止重复入参消费。
515
565
  is_using_rpc_mode=True, # 开启rpc模式,支持rpc获取结果
@@ -546,8 +596,8 @@ if __name__ == '__main__':
546
596
  for i in range(100):
547
597
  step1.push(i,i*2) # 向 step1函数的队列发送消息,入参和手动调用函数那样很相似。
548
598
  step1.publish ({'a':i,'b':i*2},task_id=f'task_{i}') # publish 第一个入参是字典,比push能传递更多funboost的辅助参数,类似celery的apply_async和delay的关系。一个简单,一个复杂但强大。
549
-
550
-
599
+
600
+
551
601
 
552
602
  """
553
603
  1.funboost 使用 ApsJobAdder.add_push_job来添加定时任务,不是add_job。
@@ -557,7 +607,10 @@ if __name__ == '__main__':
557
607
 
558
608
  下面是三种方式添加定时任务,这些定时方式都是知名apscheduler包的定时方式,和funboost没关系。
559
609
  """
560
- # 方式1:指定日期执行一次
610
+
611
+ # ApsJobAdder 类可以多次重复实例化,内部对每一个消费函数使用一个单独的apscheduler对象,避免扫描与当前关心的消费函数不相干的redis jobstore中的定时任务
612
+
613
+ # 方式1:指定日期执行一次
561
614
  ApsJobAdder(step2,
562
615
  job_store_kind='redis', # 使用reids作为 apscheduler的 jobstrores
563
616
  is_auto_start=True, # 添加任务,并同时顺便启动了定时器 执行了apscheduler对象.start()
@@ -588,10 +641,29 @@ if __name__ == '__main__':
588
641
  kwargs={"c": 50, "d": 60,"e":70},
589
642
  replace_existing=True,
590
643
  id='cron_job1')
591
-
644
+
592
645
  ctrl_c_recv() # 用于阻塞代码,阻止主线程退出,使主线程永久运行。 相当于 你在代码最末尾,加了个 while 1:time.sleep(10),使主线程永不结束。apscheduler background定时器守护线程需要这样保持定时器不退出。
593
646
 
647
+ ```
648
+
649
+ ### 1.3.3 funboost的 @BoosterParams(...) 和 @boost(BoosterParams(...)) 等效
650
+
651
+ 通常代码例子是:
594
652
 
653
+ ```python
654
+ @boost(BoosterParams(queue_name="task_queue_consume_any_msg"))
655
+ def task_fun(a: int, b: int):
656
+ print(f'a:{a},b:{b}')
657
+ return a + b
658
+ ```
659
+
660
+ 但如果你追求极致简化,也可以写成如下,不要@boost,直接@BoosterParams
661
+
662
+ ```python
663
+ @BoosterParams(queue_name="task_queue_consume_any_msg")
664
+ def task_fun(a: int, b: int):
665
+ print(f'a:{a},b:{b}')
666
+ return a + b
595
667
  ```
596
668
 
597
669
  ## funboost web manager 截图:
@@ -605,9 +677,10 @@ if __name__ == '__main__':
605
677
  运行中消费者 by ip: 根据ip搜索有哪些消费者
606
678
  [![pEJCRFx.png](https://s21.ax1x.com/2025/03/04/pEJCRFx.png)](https://imgse.com/i/pEJCRFx)
607
679
 
608
-
609
680
  队列操作:查看和操作队列,包括 清空清空 暂停消费 恢复消费 调整qps和并发
681
+
610
682
  <!-- [![pEJC6m9.png](https://s21.ax1x.com/2025/03/04/pEJC6m9.png)](https://imgse.com/i/pEJC6m9) -->
683
+
611
684
  [![pVSOJcq.png](https://s21.ax1x.com/2025/05/27/pVSOJcq.png)](https://imgse.com/i/pVSOJcq)
612
685
 
613
686
  队列操作,查看消费者详情:查看队列的所有消费者详情
@@ -617,10 +690,10 @@ if __name__ == '__main__':
617
690
  [![pVpr7sP.png](https://s21.ax1x.com/2025/05/29/pVpr7sP.png)](https://imgse.com/i/pVpr7sP)
618
691
 
619
692
  rpc调用:在网页上对30种消息队列发布消息并获取消息的函数执行结;根据taskid获取结果。
620
- <!-- [![pETq8hj.png](https://s21.ax1x.com/2025/04/28/pETq8hj.png)](https://imgse.com/i/pETq8hj) -->
621
- [![pE7y8oT.png](https://s21.ax1x.com/2025/04/29/pE7y8oT.png)](https://imgse.com/i/pE7y8oT)
622
693
 
694
+ <!-- [![pETq8hj.png](https://s21.ax1x.com/2025/04/28/pETq8hj.png)](https://imgse.com/i/pETq8hj) -->
623
695
 
696
+ [![pE7y8oT.png](https://s21.ax1x.com/2025/04/29/pE7y8oT.png)](https://imgse.com/i/pE7y8oT)
624
697
 
625
698
  ## 1.4 python分布式函数执行为什么重要?
626
699
 
@@ -639,7 +712,7 @@ python比其他语言更需要分布式函数调度框架来执行函数,有
639
712
  那么就不光是需要跨进程执行任务了,例如跨pvm解释器启动脚本共享任务(即使是同一个机器,把python xx.py连续启动多次)、
640
713
  跨docker容器、跨物理机共享任务。只有让python跑在更多进程的cpu核心 跑在更多的docker容器 跑在更多的物理机上,
641
714
  python才能获得与其他语言只需要一台机器就实现的执行速度。分布式函数调度框架来驱动函数执行针对这些不同的场景,
642
- 用户代码不需要做任何变化。
715
+ 用代码不需要做任何变化。
643
716
 
644
717
  所以比其他语言来说,python是更需要分布式函数调度框架来执行任务。
645
718
 
@@ -657,6 +730,7 @@ python比其他语言更需要分布式函数调度框架来执行函数,有
657
730
  ```
658
731
 
659
732
  ## 1.6 funboost支持支持celery框架整体作为funboost的broker (2023.4新增)
733
+
660
734
  ```
661
735
  见11.1章节代码例子,celery框架整体作为funboost的broker,funboost的发布和消费将只作为极简api,
662
736
  核心的消费调度和发布和定时功能,都是由celery框架来完成,funboost框架的发布和调度代码不实际起作用。
@@ -677,15 +751,23 @@ funboost通过支持celery作为broker_kind,使celer框架变成了funboost的
677
751
 
678
752
  [查看分布式函数调度框架完整文档](https://funboost.readthedocs.io/)
679
753
 
680
-
681
-
682
-
683
-
684
-
685
-
686
-
687
-
688
-
689
754
  ![](https://visitor-badge.glitch.me/badge?page_id=distributed_framework)
690
755
 
691
756
  <div> </div>
757
+
758
+ [//]: #
759
+ [//]: #
760
+ [//]: #
761
+ [//]: #
762
+ [//]: #
763
+ [//]: #
764
+ [//]: #
765
+ [//]: #
766
+ [//]: #
767
+ [//]: #
768
+ [//]: #
769
+ [//]: #
770
+ [//]: #
771
+ [//]: #
772
+ [//]: #
773
+ [//]: #