funboost 43.3__tar.gz → 43.5__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 (279) hide show
  1. {funboost-43.3/funboost.egg-info → funboost-43.5}/PKG-INFO +1 -1
  2. {funboost-43.3 → funboost-43.5}/funboost/__init__.py +1 -1
  3. {funboost-43.3 → funboost-43.5}/funboost/assist/celery_helper.py +1 -0
  4. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/__init__.py +0 -2
  5. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +29 -19
  6. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/custom_gevent_pool_executor.py +34 -27
  7. {funboost-43.3 → funboost-43.5}/funboost/consumers/base_consumer.py +4 -4
  8. {funboost-43.3 → funboost-43.5}/funboost/contrib/api_publish_msg.py +2 -1
  9. {funboost-43.3 → funboost-43.5}/funboost/core/fabric_deploy_helper.py +11 -5
  10. funboost-43.5/funboost/core/lazy_impoter.py +78 -0
  11. {funboost-43.3 → funboost-43.5}/funboost/utils/decorators.py +56 -4
  12. {funboost-43.3 → funboost-43.5/funboost.egg-info}/PKG-INFO +1 -1
  13. {funboost-43.3 → funboost-43.5}/funboost.egg-info/requires.txt +0 -2
  14. {funboost-43.3 → funboost-43.5}/setup.py +2 -2
  15. funboost-43.3/funboost/core/lazy_impoter.py +0 -26
  16. {funboost-43.3 → funboost-43.5}/LICENSE +0 -0
  17. {funboost-43.3 → funboost-43.5}/MANIFEST.in +0 -0
  18. {funboost-43.3 → funboost-43.5}/README.md +0 -0
  19. {funboost-43.3 → funboost-43.5}/funboost/__init__old.py +0 -0
  20. {funboost-43.3 → funboost-43.5}/funboost/__main__.py +0 -0
  21. {funboost-43.3 → funboost-43.5}/funboost/assist/__init__.py +0 -0
  22. {funboost-43.3 → funboost-43.5}/funboost/assist/dramatiq_helper.py +0 -0
  23. {funboost-43.3 → funboost-43.5}/funboost/assist/huey_helper.py +0 -0
  24. {funboost-43.3 → funboost-43.5}/funboost/assist/rocketry_helper.py +0 -0
  25. {funboost-43.3 → funboost-43.5}/funboost/assist/rq_helper.py +0 -0
  26. {funboost-43.3 → funboost-43.5}/funboost/assist/rq_windows_worker.py +0 -0
  27. {funboost-43.3 → funboost-43.5}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
  28. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/async_helper.py +0 -0
  29. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/async_pool_executor.py +0 -0
  30. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/backup/__init__.py +0 -0
  31. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
  32. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
  33. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
  34. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/base_pool_type.py +0 -0
  35. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
  36. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
  37. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
  38. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
  39. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
  40. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
  41. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
  42. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
  43. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/pool_commons.py +0 -0
  44. {funboost-43.3 → funboost-43.5}/funboost/concurrent_pool/single_thread_executor.py +0 -0
  45. {funboost-43.3 → funboost-43.5}/funboost/constant.py +0 -0
  46. {funboost-43.3 → funboost-43.5}/funboost/consumers/__init__.py +0 -0
  47. {funboost-43.3 → funboost-43.5}/funboost/consumers/celery_consumer.py +0 -0
  48. {funboost-43.3 → funboost-43.5}/funboost/consumers/confirm_mixin.py +0 -0
  49. {funboost-43.3 → funboost-43.5}/funboost/consumers/dramatiq_consumer.py +0 -0
  50. {funboost-43.3 → funboost-43.5}/funboost/consumers/http_consumer.py +0 -0
  51. {funboost-43.3 → funboost-43.5}/funboost/consumers/http_consumer000.py +0 -0
  52. {funboost-43.3 → funboost-43.5}/funboost/consumers/httpsqs_consumer.py +0 -0
  53. {funboost-43.3 → funboost-43.5}/funboost/consumers/huey_consumer.py +0 -0
  54. {funboost-43.3 → funboost-43.5}/funboost/consumers/kafka_consumer.py +0 -0
  55. {funboost-43.3 → funboost-43.5}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
  56. {funboost-43.3 → funboost-43.5}/funboost/consumers/kombu_consumer.py +0 -0
  57. {funboost-43.3 → funboost-43.5}/funboost/consumers/local_python_queue_consumer.py +0 -0
  58. {funboost-43.3 → funboost-43.5}/funboost/consumers/memory_deque_consumer.py +0 -0
  59. {funboost-43.3 → funboost-43.5}/funboost/consumers/mongomq_consumer.py +0 -0
  60. {funboost-43.3 → funboost-43.5}/funboost/consumers/mqtt_consumer.py +0 -0
  61. {funboost-43.3 → funboost-43.5}/funboost/consumers/nameko_consumer.py +0 -0
  62. {funboost-43.3 → funboost-43.5}/funboost/consumers/nats_consumer.py +0 -0
  63. {funboost-43.3 → funboost-43.5}/funboost/consumers/nsq_consumer.py +0 -0
  64. {funboost-43.3 → funboost-43.5}/funboost/consumers/peewee_conusmer.py +0 -0
  65. {funboost-43.3 → funboost-43.5}/funboost/consumers/persist_queue_consumer.py +0 -0
  66. {funboost-43.3 → funboost-43.5}/funboost/consumers/pulsar_consumer.py +0 -0
  67. {funboost-43.3 → funboost-43.5}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
  68. {funboost-43.3 → funboost-43.5}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
  69. {funboost-43.3 → funboost-43.5}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
  70. {funboost-43.3 → funboost-43.5}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
  71. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
  72. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_consumer.py +0 -0
  73. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_consumer_ack_able.py +0 -0
  74. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_consumer_priority.py +0 -0
  75. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_consumer_simple.py +0 -0
  76. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_filter.py +0 -0
  77. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_pubsub_consumer.py +0 -0
  78. {funboost-43.3 → funboost-43.5}/funboost/consumers/redis_stream_consumer.py +0 -0
  79. {funboost-43.3 → funboost-43.5}/funboost/consumers/rocketmq_consumer.py +0 -0
  80. {funboost-43.3 → funboost-43.5}/funboost/consumers/rq_consumer.py +0 -0
  81. {funboost-43.3 → funboost-43.5}/funboost/consumers/sqlachemy_consumer.py +0 -0
  82. {funboost-43.3 → funboost-43.5}/funboost/consumers/tcp_consumer.py +0 -0
  83. {funboost-43.3 → funboost-43.5}/funboost/consumers/txt_file_consumer.py +0 -0
  84. {funboost-43.3 → funboost-43.5}/funboost/consumers/udp_consumer.py +0 -0
  85. {funboost-43.3 → funboost-43.5}/funboost/consumers/zeromq_consumer.py +0 -0
  86. {funboost-43.3 → funboost-43.5}/funboost/contrib/__init__.py +0 -0
  87. {funboost-43.3 → funboost-43.5}/funboost/contrib/django_db_deco.py +0 -0
  88. {funboost-43.3 → funboost-43.5}/funboost/contrib/queue2queue.py +0 -0
  89. {funboost-43.3 → funboost-43.5}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
  90. {funboost-43.3 → funboost-43.5}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
  91. {funboost-43.3 → funboost-43.5}/funboost/core/__init__.py +0 -0
  92. {funboost-43.3 → funboost-43.5}/funboost/core/active_cousumer_info_getter.py +0 -0
  93. {funboost-43.3 → funboost-43.5}/funboost/core/booster.py +0 -0
  94. {funboost-43.3 → funboost-43.5}/funboost/core/cli/__init__.py +0 -0
  95. {funboost-43.3 → funboost-43.5}/funboost/core/cli/discovery_boosters.py +0 -0
  96. {funboost-43.3 → funboost-43.5}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
  97. {funboost-43.3 → funboost-43.5}/funboost/core/cli/funboost_fire.py +0 -0
  98. {funboost-43.3 → funboost-43.5}/funboost/core/current_task.py +0 -0
  99. {funboost-43.3 → funboost-43.5}/funboost/core/exceptions.py +0 -0
  100. {funboost-43.3 → funboost-43.5}/funboost/core/func_params_model.py +0 -0
  101. {funboost-43.3 → funboost-43.5}/funboost/core/function_result_status_config.py +0 -0
  102. {funboost-43.3 → funboost-43.5}/funboost/core/function_result_status_saver.py +0 -0
  103. {funboost-43.3 → funboost-43.5}/funboost/core/helper_funs.py +0 -0
  104. {funboost-43.3 → funboost-43.5}/funboost/core/kill_remote_task.py +0 -0
  105. {funboost-43.3 → funboost-43.5}/funboost/core/loggers.py +0 -0
  106. {funboost-43.3 → funboost-43.5}/funboost/core/msg_result_getter.py +0 -0
  107. {funboost-43.3 → funboost-43.5}/funboost/core/muliti_process_enhance.py +0 -0
  108. {funboost-43.3 → funboost-43.5}/funboost/core/task_id_logger.py +0 -0
  109. {funboost-43.3 → funboost-43.5}/funboost/core/try_get_user_funboost_common_config.py +0 -0
  110. {funboost-43.3 → funboost-43.5}/funboost/factories/__init__.py +0 -0
  111. {funboost-43.3 → funboost-43.5}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
  112. {funboost-43.3 → funboost-43.5}/funboost/factories/consumer_factory.py +0 -0
  113. {funboost-43.3 → funboost-43.5}/funboost/factories/publisher_factotry.py +0 -0
  114. {funboost-43.3 → funboost-43.5}/funboost/funboost_config_deafult.py +0 -0
  115. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  116. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  117. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/app.py +0 -0
  118. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/functions.py +0 -0
  119. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/assets/css/custom.css +0 -0
  120. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
  121. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
  122. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/assets/js/custom.js +0 -0
  123. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
  124. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/css/style.css +0 -0
  125. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/images/bg.jpg +0 -0
  126. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/images/password.png +0 -0
  127. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/images/tick.png +0 -0
  128. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/images/user.png +0 -0
  129. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
  130. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/templates/index.html +0 -0
  131. {funboost-43.3 → funboost-43.5}/funboost/function_result_web/templates/login.html +0 -0
  132. {funboost-43.3 → funboost-43.5}/funboost/publishers/__init__.py +0 -0
  133. {funboost-43.3 → funboost-43.5}/funboost/publishers/base_publisher.py +0 -0
  134. {funboost-43.3 → funboost-43.5}/funboost/publishers/celery_publisher.py +0 -0
  135. {funboost-43.3 → funboost-43.5}/funboost/publishers/celery_publisher000.py +0 -0
  136. {funboost-43.3 → funboost-43.5}/funboost/publishers/confluent_kafka_publisher.py +0 -0
  137. {funboost-43.3 → funboost-43.5}/funboost/publishers/dramatiq_publisher.py +0 -0
  138. {funboost-43.3 → funboost-43.5}/funboost/publishers/http_publisher.py +0 -0
  139. {funboost-43.3 → funboost-43.5}/funboost/publishers/httpsqs_publisher.py +0 -0
  140. {funboost-43.3 → funboost-43.5}/funboost/publishers/huey_publisher.py +0 -0
  141. {funboost-43.3 → funboost-43.5}/funboost/publishers/kafka_publisher.py +0 -0
  142. {funboost-43.3 → funboost-43.5}/funboost/publishers/kombu_publisher.py +0 -0
  143. {funboost-43.3 → funboost-43.5}/funboost/publishers/local_python_queue_publisher.py +0 -0
  144. {funboost-43.3 → funboost-43.5}/funboost/publishers/meomory_deque_publisher.py +0 -0
  145. {funboost-43.3 → funboost-43.5}/funboost/publishers/mongomq_publisher.py +0 -0
  146. {funboost-43.3 → funboost-43.5}/funboost/publishers/mqtt_publisher.py +0 -0
  147. {funboost-43.3 → funboost-43.5}/funboost/publishers/nameko_publisher.py +0 -0
  148. {funboost-43.3 → funboost-43.5}/funboost/publishers/nats_publisher.py +0 -0
  149. {funboost-43.3 → funboost-43.5}/funboost/publishers/nsq_publisher.py +0 -0
  150. {funboost-43.3 → funboost-43.5}/funboost/publishers/peewee_publisher.py +0 -0
  151. {funboost-43.3 → funboost-43.5}/funboost/publishers/persist_queue_publisher.py +0 -0
  152. {funboost-43.3 → funboost-43.5}/funboost/publishers/pulsar_publisher.py +0 -0
  153. {funboost-43.3 → funboost-43.5}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
  154. {funboost-43.3 → funboost-43.5}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
  155. {funboost-43.3 → funboost-43.5}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
  156. {funboost-43.3 → funboost-43.5}/funboost/publishers/redis_publisher.py +0 -0
  157. {funboost-43.3 → funboost-43.5}/funboost/publishers/redis_publisher_lpush.py +0 -0
  158. {funboost-43.3 → funboost-43.5}/funboost/publishers/redis_publisher_priority.py +0 -0
  159. {funboost-43.3 → funboost-43.5}/funboost/publishers/redis_publisher_simple.py +0 -0
  160. {funboost-43.3 → funboost-43.5}/funboost/publishers/redis_pubsub_publisher.py +0 -0
  161. {funboost-43.3 → funboost-43.5}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
  162. {funboost-43.3 → funboost-43.5}/funboost/publishers/redis_stream_publisher.py +0 -0
  163. {funboost-43.3 → funboost-43.5}/funboost/publishers/rocketmq_publisher.py +0 -0
  164. {funboost-43.3 → funboost-43.5}/funboost/publishers/rq_publisher.py +0 -0
  165. {funboost-43.3 → funboost-43.5}/funboost/publishers/sqla_queue_publisher.py +0 -0
  166. {funboost-43.3 → funboost-43.5}/funboost/publishers/tcp_publisher.py +0 -0
  167. {funboost-43.3 → funboost-43.5}/funboost/publishers/txt_file_publisher.py +0 -0
  168. {funboost-43.3 → funboost-43.5}/funboost/publishers/udp_publisher.py +0 -0
  169. {funboost-43.3 → funboost-43.5}/funboost/publishers/zeromq_publisher.py +0 -0
  170. {funboost-43.3 → funboost-43.5}/funboost/queues/__init__.py +0 -0
  171. {funboost-43.3 → funboost-43.5}/funboost/queues/peewee_queue.py +0 -0
  172. {funboost-43.3 → funboost-43.5}/funboost/queues/sqla_queue.py +0 -0
  173. {funboost-43.3 → funboost-43.5}/funboost/set_frame_config.py +0 -0
  174. {funboost-43.3 → funboost-43.5}/funboost/timing_job/__init__.py +0 -0
  175. {funboost-43.3 → funboost-43.5}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
  176. {funboost-43.3 → funboost-43.5}/funboost/timing_job/apscheduler_use_redis_store.py +0 -0
  177. {funboost-43.3 → funboost-43.5}/funboost/utils/__init__.py +0 -0
  178. {funboost-43.3 → funboost-43.5}/funboost/utils/apscheduler_monkey.py +0 -0
  179. {funboost-43.3 → funboost-43.5}/funboost/utils/block_exit.py +0 -0
  180. {funboost-43.3 → funboost-43.5}/funboost/utils/bulk_operation.py +0 -0
  181. {funboost-43.3 → funboost-43.5}/funboost/utils/ctrl_c_end.py +0 -0
  182. {funboost-43.3 → funboost-43.5}/funboost/utils/custom_pysnooper.py +0 -0
  183. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages/__init__.py +0 -0
  184. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
  185. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
  186. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
  187. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
  188. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
  189. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
  190. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
  191. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
  192. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
  193. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
  194. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
  195. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
  196. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
  197. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
  198. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
  199. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
  200. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
  201. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
  202. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
  203. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
  204. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
  205. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
  206. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
  207. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
  208. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
  209. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
  210. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
  211. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
  212. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
  213. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
  214. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
  215. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
  216. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
  217. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
  218. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
  219. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
  220. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
  221. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
  222. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
  223. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
  224. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
  225. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
  226. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
  227. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +0 -0
  228. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
  229. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
  230. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
  231. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
  232. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
  233. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
  234. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
  235. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
  236. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
  237. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
  238. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
  239. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
  240. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
  241. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
  242. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
  243. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
  244. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
  245. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
  246. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
  247. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
  248. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
  249. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
  250. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
  251. {funboost-43.3 → funboost-43.5}/funboost/utils/dependency_packages_in_pythonpath/readme.md +0 -0
  252. {funboost-43.3 → funboost-43.5}/funboost/utils/develop_log.py +0 -0
  253. {funboost-43.3 → funboost-43.5}/funboost/utils/expire_lock.py +0 -0
  254. {funboost-43.3 → funboost-43.5}/funboost/utils/json_helper.py +0 -0
  255. {funboost-43.3 → funboost-43.5}/funboost/utils/mongo_util.py +0 -0
  256. {funboost-43.3 → funboost-43.5}/funboost/utils/monkey_color_log.py +0 -0
  257. {funboost-43.3 → funboost-43.5}/funboost/utils/monkey_patches.py +0 -0
  258. {funboost-43.3 → funboost-43.5}/funboost/utils/mqtt_util.py +0 -0
  259. {funboost-43.3 → funboost-43.5}/funboost/utils/paramiko_util.py +0 -0
  260. {funboost-43.3 → funboost-43.5}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
  261. {funboost-43.3 → funboost-43.5}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
  262. {funboost-43.3 → funboost-43.5}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
  263. {funboost-43.3 → funboost-43.5}/funboost/utils/pysnooper_ydf/utils.py +0 -0
  264. {funboost-43.3 → funboost-43.5}/funboost/utils/pysnooper_ydf/variables.py +0 -0
  265. {funboost-43.3 → funboost-43.5}/funboost/utils/rabbitmq_factory.py +0 -0
  266. {funboost-43.3 → funboost-43.5}/funboost/utils/redis_manager.py +0 -0
  267. {funboost-43.3 → funboost-43.5}/funboost/utils/redis_manager_old.py +0 -0
  268. {funboost-43.3 → funboost-43.5}/funboost/utils/resource_monitoring.py +0 -0
  269. {funboost-43.3 → funboost-43.5}/funboost/utils/restart_python.py +0 -0
  270. {funboost-43.3 → funboost-43.5}/funboost/utils/simple_data_class.py +0 -0
  271. {funboost-43.3 → funboost-43.5}/funboost/utils/time_util.py +0 -0
  272. {funboost-43.3 → funboost-43.5}/funboost/utils/times/__init__.py +0 -0
  273. {funboost-43.3 → funboost-43.5}/funboost/utils/times/version.py +0 -0
  274. {funboost-43.3 → funboost-43.5}/funboost/utils/un_strict_json_dumps.py +0 -0
  275. {funboost-43.3 → funboost-43.5}/funboost.egg-info/SOURCES.txt +0 -0
  276. {funboost-43.3 → funboost-43.5}/funboost.egg-info/dependency_links.txt +0 -0
  277. {funboost-43.3 → funboost-43.5}/funboost.egg-info/entry_points.txt +0 -0
  278. {funboost-43.3 → funboost-43.5}/funboost.egg-info/top_level.txt +0 -0
  279. {funboost-43.3 → funboost-43.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 43.3
3
+ Version: 43.5
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
13
13
  这段注释说明和使用的用户无关,只和框架开发人员有关.
14
14
  '''
15
15
 
16
- __version__ = "43.3"
16
+ __version__ = "43.5"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -40,6 +40,7 @@ class CeleryHelper:
40
40
  :return:
41
41
  """
42
42
  celery_app.conf.update(celery_app_conf)
43
+ # 例如 celery_app.conf.update({'broker_transport_options':{'visibility_timeout': 18000,'max_retries':5}})
43
44
 
44
45
  @staticmethod
45
46
  def show_celery_app_conf():
@@ -12,8 +12,6 @@ gevent协程
12
12
  """
13
13
  from .base_pool_type import FunboostBaseConcurrentPool
14
14
  from .async_pool_executor import AsyncPoolExecutor
15
- # from .custom_evenlet_pool_executor import CustomEventletPoolExecutor
16
- # from .custom_gevent_pool_executor import GeventPoolExecutor
17
15
  from .bounded_threadpoolexcutor import BoundedThreadPoolExecutor
18
16
  from .custom_threadpool_executor import CustomThreadPoolExecutor
19
17
  from .flexible_thread_pool import FlexibleThreadPool
@@ -4,19 +4,26 @@
4
4
  import atexit
5
5
  import time
6
6
  import warnings
7
- from eventlet import greenpool, monkey_patch, patcher, Timeout
7
+ # from eventlet import greenpool, monkey_patch, patcher, Timeout
8
8
 
9
9
  from funboost.concurrent_pool import FunboostBaseConcurrentPool
10
10
  from funboost.core.loggers import get_funboost_file_logger
11
11
  # print('eventlet 导入')
12
+ from funboost.core.lazy_impoter import EventletImporter
13
+
12
14
 
13
15
  def check_evenlet_monkey_patch(raise_exc=True):
14
- if not patcher.is_monkey_patched('socket'): # 随便选一个检测标志
16
+ try:
17
+ if not EventletImporter().patcher.is_monkey_patched('socket'): # 随便选一个检测标志
18
+ if raise_exc:
19
+ warnings.warn(f'检测到没有打 evenlet 包的猴子补丁 ,请在起始脚本文件首行加上 import eventlet;eventlet.monkey_patch(all=True) ')
20
+ raise Exception('检测到没有打 evenlet 包的猴子补丁 ,请在起始脚本文件首行加上 import eventlet;eventlet.monkey_patch(all=True)')
21
+ else:
22
+ return 1
23
+ except ModuleNotFoundError:
15
24
  if raise_exc:
16
25
  warnings.warn(f'检测到没有打 evenlet 包的猴子补丁 ,请在起始脚本文件首行加上 import eventlet;eventlet.monkey_patch(all=True) ')
17
26
  raise Exception('检测到没有打 evenlet 包的猴子补丁 ,请在起始脚本文件首行加上 import eventlet;eventlet.monkey_patch(all=True)')
18
- else:
19
- return 1
20
27
 
21
28
 
22
29
  logger_evenlet_timeout_deco = get_funboost_file_logger('evenlet_timeout_deco')
@@ -25,12 +32,12 @@ logger_evenlet_timeout_deco = get_funboost_file_logger('evenlet_timeout_deco')
25
32
  def evenlet_timeout_deco(timeout_t):
26
33
  def _evenlet_timeout_deco(f):
27
34
  def __evenlet_timeout_deco(*args, **kwargs):
28
- timeout = Timeout(timeout_t, )
35
+ timeout = EventletImporter().Timeout(timeout_t, )
29
36
  # timeout.start() # 与gevent不一样,直接start了。
30
37
  result = None
31
38
  try:
32
39
  result = f(*args, **kwargs)
33
- except Timeout as t:
40
+ except EventletImporter().Timeout as t:
34
41
  logger_evenlet_timeout_deco.error(f'函数 {f} 运行超过了 {timeout_t} 秒')
35
42
  if t is not timeout:
36
43
  print(t)
@@ -44,24 +51,27 @@ def evenlet_timeout_deco(timeout_t):
44
51
  return _evenlet_timeout_deco
45
52
 
46
53
 
47
- class CustomEventletPoolExecutor(greenpool.GreenPool,FunboostBaseConcurrentPool):
48
- def __init__(self, *args, **kwargs):
49
- super().__init__(*args, **kwargs)
50
- check_evenlet_monkey_patch() # basecomer.py中检查。
51
- atexit.register(self.shutdown)
54
+ def get_eventlet_pool_executor(*args2, **kwargs2):
55
+ class CustomEventletPoolExecutor(EventletImporter().greenpool.GreenPool, FunboostBaseConcurrentPool):
56
+ def __init__(self, *args, **kwargs):
57
+ super().__init__(*args, **kwargs)
58
+ check_evenlet_monkey_patch() # basecomer.py中检查。
59
+ atexit.register(self.shutdown)
60
+
61
+ def submit(self, *args, **kwargs): # 保持为一直的公有用法。
62
+ # nb_print(args)
63
+ self.spawn_n(*args, **kwargs)
64
+ # self.spawn_n(*args, **kwargs)
52
65
 
53
- def submit(self, *args, **kwargs): # 保持为一直的公有用法。
54
- # nb_print(args)
55
- self.spawn_n(*args, **kwargs)
56
- # self.spawn_n(*args, **kwargs)
66
+ def shutdown(self):
67
+ self.waitall()
57
68
 
58
- def shutdown(self):
59
- self.waitall()
69
+ return CustomEventletPoolExecutor(*args2, **kwargs2)
60
70
 
61
71
 
62
72
  if __name__ == '__main__':
63
73
  # greenpool.GreenPool.waitall()
64
- monkey_patch(all=True)
74
+ EventletImporter().monkey_patch(all=True)
65
75
 
66
76
 
67
77
  def f2(x):
@@ -70,7 +80,7 @@ if __name__ == '__main__':
70
80
  print(x)
71
81
 
72
82
 
73
- pool = CustomEventletPoolExecutor(4)
83
+ pool = get_eventlet_pool_executor(4)
74
84
 
75
85
  for i in range(15):
76
86
  print(f'放入{i}')
@@ -7,23 +7,27 @@ import warnings
7
7
  # from collections import Callable
8
8
  from typing import Callable
9
9
  import threading
10
- import gevent
11
- from gevent import pool as gevent_pool
12
- from gevent import monkey
13
- from gevent.queue import JoinableQueue
10
+ from funboost.core.lazy_impoter import GeventImporter
14
11
 
15
12
  # from nb_log import LoggerMixin, nb_print, LogManager
16
13
  from funboost.concurrent_pool import FunboostBaseConcurrentPool
17
- from funboost.core.loggers import get_funboost_file_logger,FunboostFileLoggerMixin
14
+ from funboost.core.loggers import get_funboost_file_logger, FunboostFileLoggerMixin
15
+
16
+
18
17
  # print('gevent 导入')
19
18
 
20
19
  def check_gevent_monkey_patch(raise_exc=True):
21
- if not monkey.is_module_patched('socket'): # 随便选一个检测标志
20
+ try:
21
+ if not GeventImporter().monkey.is_module_patched('socket'): # 随便选一个检测标志
22
+ if raise_exc:
23
+ warnings.warn(f'检测到 你还没有打gevent包的猴子补丁,请在所运行的起始脚本第一行写上 【import gevent.monkey;gevent.monkey.patch_all()】 这句话。')
24
+ raise Exception(f'检测到 你还没有打gevent包的猴子补丁,请在所运行的起始脚本第一行写上 【import gevent.monkey;gevent.monkey.patch_all()】 这句话。')
25
+ else:
26
+ return 1
27
+ except ModuleNotFoundError:
22
28
  if raise_exc:
23
29
  warnings.warn(f'检测到 你还没有打gevent包的猴子补丁,请在所运行的起始脚本第一行写上 【import gevent.monkey;gevent.monkey.patch_all()】 这句话。')
24
30
  raise Exception(f'检测到 你还没有打gevent包的猴子补丁,请在所运行的起始脚本第一行写上 【import gevent.monkey;gevent.monkey.patch_all()】 这句话。')
25
- else:
26
- return 1
27
31
 
28
32
 
29
33
  logger_gevent_timeout_deco = get_funboost_file_logger('gevent_timeout_deco')
@@ -32,12 +36,12 @@ logger_gevent_timeout_deco = get_funboost_file_logger('gevent_timeout_deco')
32
36
  def gevent_timeout_deco(timeout_t):
33
37
  def _gevent_timeout_deco(f):
34
38
  def __gevent_timeout_deceo(*args, **kwargs):
35
- timeout = gevent.Timeout(timeout_t, )
39
+ timeout = GeventImporter().gevent.Timeout(timeout_t, )
36
40
  timeout.start()
37
41
  result = None
38
42
  try:
39
43
  result = f(*args, **kwargs)
40
- except gevent.Timeout as t:
44
+ except GeventImporter().gevent.Timeout as t:
41
45
  logger_gevent_timeout_deco.error(f'函数 {f} 运行超过了 {timeout_t} 秒')
42
46
  if t is not timeout:
43
47
  print(t)
@@ -51,25 +55,28 @@ def gevent_timeout_deco(timeout_t):
51
55
  return _gevent_timeout_deco
52
56
 
53
57
 
54
- class GeventPoolExecutor(gevent_pool.Pool,FunboostBaseConcurrentPool):
55
- def __init__(self, size=None, greenlet_class=None):
56
- check_gevent_monkey_patch() # basecomer.py中检查。
57
- super().__init__(size, greenlet_class)
58
- atexit.register(self.shutdown)
58
+ def get_gevent_pool_executor(size=None, greenlet_class=None):
59
+ class GeventPoolExecutor(GeventImporter().gevent_pool.Pool, FunboostBaseConcurrentPool):
60
+ def __init__(self, size2=None, greenlet_class2=None):
61
+ check_gevent_monkey_patch() # basecomer.py中检查。
62
+ super().__init__(size2, greenlet_class2)
63
+ atexit.register(self.shutdown)
64
+
65
+ def submit(self, *args, **kwargs):
66
+ self.spawn(*args, **kwargs)
59
67
 
60
- def submit(self, *args, **kwargs):
61
- self.spawn(*args, **kwargs)
68
+ def shutdown(self):
69
+ self.join()
62
70
 
63
- def shutdown(self):
64
- self.join()
71
+ return GeventPoolExecutor(size, greenlet_class)
65
72
 
66
73
 
67
- class GeventPoolExecutor2(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
74
+ class GeventPoolExecutor2(FunboostFileLoggerMixin, FunboostBaseConcurrentPool):
68
75
  def __init__(self, max_works, ):
69
- self._q = JoinableQueue(maxsize=max_works)
76
+ self._q = GeventImporter().JoinableQueue(maxsize=max_works)
70
77
  # self._q = Queue(maxsize=max_works)
71
78
  for _ in range(max_works):
72
- gevent.spawn(self.__worker)
79
+ GeventImporter().gevent.spawn(self.__worker)
73
80
  # atexit.register(self.__atexit)
74
81
  self._q.join(timeout=100)
75
82
 
@@ -92,12 +99,12 @@ class GeventPoolExecutor2(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
92
99
  self._q.join()
93
100
 
94
101
 
95
- class GeventPoolExecutor3(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
102
+ class GeventPoolExecutor3(FunboostFileLoggerMixin, FunboostBaseConcurrentPool):
96
103
  def __init__(self, max_works, ):
97
- self._q = gevent.queue.Queue(max_works)
104
+ self._q = GeventImporter().gevent.queue.Queue(max_works)
98
105
  self.g_list = []
99
106
  for _ in range(max_works):
100
- self.g_list.append(gevent.spawn(self.__worker))
107
+ self.g_list.append(GeventImporter().gevent.spawn(self.__worker))
101
108
  atexit.register(self.__atexit)
102
109
 
103
110
  def __worker(self):
@@ -112,7 +119,7 @@ class GeventPoolExecutor3(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
112
119
  self._q.put((fn, args, kwargs))
113
120
 
114
121
  def joinall(self):
115
- gevent.joinall(self.g_list)
122
+ GeventImporter().gevent.joinall(self.g_list)
116
123
 
117
124
  def joinall_in_new_thread(self):
118
125
  threading.Thread(target=self.joinall)
@@ -123,7 +130,7 @@ class GeventPoolExecutor3(FunboostFileLoggerMixin,FunboostBaseConcurrentPool):
123
130
 
124
131
 
125
132
  if __name__ == '__main__':
126
- monkey.patch_all(thread=False)
133
+ GeventImporter().monkey.patch_all(thread=False)
127
134
 
128
135
 
129
136
  def f2(x):
@@ -972,11 +972,11 @@ class ConcurrentModeDispatcher(FunboostFileLoggerMixin):
972
972
  # pool_type = BoundedThreadPoolExecutor
973
973
  pool_type = FlexibleThreadPool
974
974
  elif self._concurrent_mode == ConcurrentModeEnum.GEVENT:
975
- from funboost.concurrent_pool.custom_gevent_pool_executor import GeventPoolExecutor
976
- pool_type = GeventPoolExecutor
975
+ from funboost.concurrent_pool.custom_gevent_pool_executor import get_gevent_pool_executor
976
+ pool_type = get_gevent_pool_executor
977
977
  elif self._concurrent_mode == ConcurrentModeEnum.EVENTLET:
978
- from funboost.concurrent_pool.custom_evenlet_pool_executor import CustomEventletPoolExecutor
979
- pool_type = CustomEventletPoolExecutor
978
+ from funboost.concurrent_pool.custom_evenlet_pool_executor import get_eventlet_pool_executor
979
+ pool_type = get_eventlet_pool_executor
980
980
  elif self._concurrent_mode == ConcurrentModeEnum.ASYNC:
981
981
  pool_type = AsyncPoolExecutor
982
982
  elif self._concurrent_mode == ConcurrentModeEnum.SINGLE_THREAD:
@@ -1,4 +1,5 @@
1
1
  import traceback
2
+ import typing
2
3
 
3
4
  from funboost import AioAsyncResult, AsyncResult
4
5
 
@@ -18,7 +19,7 @@ class MsgItem(BaseModel):
18
19
  class PublishResponse(BaseModel):
19
20
  succ: bool
20
21
  msg: str
21
- status_and_result: dict = None # 消费函数的消费状态和结果.
22
+ status_and_result: typing.Optional[dict] = None # 消费函数的消费状态和结果.
22
23
 
23
24
 
24
25
  # 创建 FastAPI 应用实例
@@ -3,7 +3,8 @@ import re
3
3
  import sys
4
4
  import threading
5
5
  import time
6
-
6
+ import os
7
+ from pathlib import Path
7
8
  from fabric2 import Connection
8
9
 
9
10
  # from funboost.core.booster import Booster
@@ -12,11 +13,12 @@ from funboost.utils.paramiko_util import ParamikoFolderUploader
12
13
  # import nb_log
13
14
  from funboost.core.loggers import get_funboost_file_logger
14
15
  from funboost.core.booster import Booster
16
+
15
17
  logger = get_funboost_file_logger(__name__)
16
18
 
17
19
 
18
20
  # noinspection PyDefaultArgument
19
- def fabric_deploy(booster:Booster, host, port, user, password,
21
+ def fabric_deploy(booster: Booster, host, port, user, password,
20
22
  path_pattern_exluded_tuple=('/.git/', '/.idea/', '/dist/', '/build/'),
21
23
  file_suffix_tuple_exluded=('.pyc', '.log', '.gz'),
22
24
  only_upload_within_the_last_modify_time=3650 * 24 * 60 * 60,
@@ -69,9 +71,13 @@ def fabric_deploy(booster:Booster, host, port, user, password,
69
71
  python_proj_dir_short = python_proj_dir.split('/')[-2]
70
72
  # 获取被调用函数所在模块文件名
71
73
  file_name = sys._getframe(2).f_code.co_filename.replace('\\', '/') # noqa\
72
- # print(file_name)
73
- relative_file_name = re.sub(f'^{python_proj_dir}', '', file_name)
74
+ # print(file_name,python_proj_dir)
75
+ # print(Path(file_name).relative_to(Path(python_proj_dir)))
76
+ # print(8888)
77
+ # relative_file_name = re.sub(f'^{python_proj_dir}', '', file_name)
78
+ relative_file_name = Path(file_name).relative_to(Path(python_proj_dir)).as_posix()
74
79
  relative_module = relative_file_name.replace('/', '.')[:-3] # -3是去掉.py
80
+ print(relative_module)
75
81
  if user == 'root': # 文件夹会被自动创建,无需用户创建。
76
82
  remote_dir = f'/codes/{python_proj_dir_short}'
77
83
  else:
@@ -95,7 +101,7 @@ def fabric_deploy(booster:Booster, host, port, user, password,
95
101
  kill_shell = f'''ps -aux|grep {process_mark}|grep -v grep|awk '{{print $2}}' |xargs kill -9'''
96
102
  logger.warning(f'{kill_shell} 命令杀死 {process_mark} 标识的进程')
97
103
  # uploader.ssh.exec_command(kill_shell)
98
- conn.run(kill_shell, encoding='utf-8',warn=True) # 不想提示,免得烦扰用户以为有什么异常了。所以用上面的paramiko包的ssh.exec_command
104
+ conn.run(kill_shell, encoding='utf-8', warn=True) # 不想提示,免得烦扰用户以为有什么异常了。所以用上面的paramiko包的ssh.exec_command
99
105
 
100
106
  python_exec_str = f'''export is_funboost_remote_run=1;export PYTHONPATH={remote_dir}:$PYTHONPATH ;{python_interpreter} -c "from {relative_module} import {func_name};{func_name}.multi_process_consume({process_num})" -funboostmark {process_mark} '''
101
107
  shell_str = f'''cd {remote_dir}; {python_exec_str}'''
@@ -0,0 +1,78 @@
1
+ import abc
2
+
3
+ from funboost.utils.decorators import cached_method_result, singleton, SingletonBaseNew, SingletonBaseCustomInit
4
+
5
+
6
+ # @singleton # 不方便代码补全
7
+
8
+ class LazyImpoter(SingletonBaseNew):
9
+ """
10
+ 延迟导入,避免需要互相导入.
11
+ """
12
+
13
+ @property
14
+ @cached_method_result
15
+ def BoostersManager(self):
16
+ from funboost.core.booster import BoostersManager
17
+ return BoostersManager
18
+
19
+ # @property
20
+ # @cached_method_result
21
+ # def get_current_taskid(self):
22
+ # from funboost.core.current_task import get_current_taskid
23
+ # return get_current_taskid
24
+
25
+
26
+ lazy_impoter = LazyImpoter()
27
+
28
+
29
+ class GeventImporter(SingletonBaseNew):
30
+ """
31
+ import gevent
32
+ from gevent import pool as gevent_pool
33
+ from gevent import monkey
34
+ from gevent.queue import JoinableQueue
35
+ """
36
+
37
+ @property
38
+ @cached_method_result
39
+ def gevent(self):
40
+ import gevent
41
+ return gevent
42
+
43
+ @property
44
+ @cached_method_result
45
+ def gevent_pool(self):
46
+ from gevent import pool as gevent_pool
47
+ return gevent_pool
48
+
49
+ @property
50
+ @cached_method_result
51
+ def monkey(self):
52
+ from gevent import monkey
53
+ return monkey
54
+
55
+ @property
56
+ @cached_method_result
57
+ def JoinableQueue(self):
58
+ from gevent.queue import JoinableQueue
59
+ return JoinableQueue
60
+
61
+
62
+ class EventletImporter(SingletonBaseCustomInit):
63
+ """
64
+ from eventlet import greenpool, monkey_patch, patcher, Timeout
65
+ """
66
+
67
+ def _custom_init(self, ):
68
+ from eventlet import greenpool, monkey_patch, patcher, Timeout
69
+ self.greenpool = greenpool
70
+ self.monkey_patch = monkey_patch
71
+ self.patcher = patcher
72
+ self.Timeout = Timeout
73
+
74
+
75
+ if __name__ == '__main__':
76
+ for i in range(10000):
77
+ # lazy_impoter.BoostersManager
78
+ EventletImporter().greenpool
@@ -1,6 +1,7 @@
1
1
  # coding=utf-8
2
2
  import base64
3
3
  import copy
4
+ import abc
4
5
  import logging
5
6
  import random
6
7
  import uuid
@@ -165,6 +166,60 @@ def singleton(cls):
165
166
  return _singleton
166
167
 
167
168
 
169
+ class SingletonMeta(type):
170
+ _instances = {}
171
+
172
+ def __call__(cls, *args, **kwargs):
173
+ if cls not in cls._instances:
174
+ cls._instances[cls] = super().__call__(*args, **kwargs)
175
+ return cls._instances[cls]
176
+
177
+
178
+ class SingletonBaseCall(metaclass=SingletonMeta):
179
+ """
180
+ 单例基类。任何继承自这个基类的子类都会自动成为单例。
181
+
182
+ 示例:
183
+ class MyClass(SingletonBase):
184
+ pass
185
+
186
+ instance1 = MyClass()
187
+ instance2 = MyClass()
188
+
189
+ assert instance1 is instance2 # 实例1和实例2实际上是同一个对象
190
+ """
191
+
192
+ def __init_subclass__(cls, **kwargs):
193
+ super().__init_subclass__(**kwargs)
194
+ # 可以在此处添加对子类的额外处理,比如检查其是否符合单例要求等
195
+
196
+
197
+ class SingletonBaseNew:
198
+ _instance = None
199
+
200
+ def __new__(cls, *args, **kwargs):
201
+ if not cls._instance:
202
+ cls._instance = super().__new__(cls)
203
+ return cls._instance
204
+
205
+ def __init_subclass__(cls, **kwargs):
206
+ super().__init_subclass__(**kwargs)
207
+ # 可以在此处添加对子类的额外处理,比如检查其是否符合单例要求等
208
+
209
+
210
+ class SingletonBaseCustomInit(metaclass=abc.ABCMeta):
211
+ _instance = None
212
+
213
+ def __new__(cls, *args, **kwargs):
214
+ if not cls._instance:
215
+ cls._instance = super().__new__(cls)
216
+ cls._instance._custom_init(*args, **kwargs)
217
+ return cls._instance
218
+
219
+ def _custom_init(self, *args, **kwargs):
220
+ raise NotImplemented
221
+
222
+
168
223
  def flyweight(cls):
169
224
  _instance = {}
170
225
 
@@ -291,6 +346,7 @@ class RedisDistributedLockContextManager(LoggerMixin, LoggerLevelSetterMixin):
291
346
  else:
292
347
  return False
293
348
 
349
+
294
350
  """
295
351
  @contextmanager
296
352
  def some_generator(<arguments>):
@@ -536,8 +592,6 @@ def timeout(seconds):
536
592
 
537
593
  def timeout_decorator(func):
538
594
 
539
-
540
-
541
595
  def _(*args, **kwargs):
542
596
  def _new_func(oldfunc, result, oldfunc_args, oldfunc_kwargs):
543
597
  result.append(oldfunc(*oldfunc_args, **oldfunc_kwargs))
@@ -738,8 +792,6 @@ class _Test(unittest.TestCase):
738
792
  f(5)
739
793
 
740
794
 
741
-
742
-
743
795
  if __name__ == '__main__':
744
796
  pass
745
797
  unittest.main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 43.3
3
+ Version: 43.5
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -1,6 +1,4 @@
1
1
  nb_log>=12.6
2
- eventlet==0.33.3
3
- gevent==22.10.2
4
2
  pymongo==4.3.3
5
3
  AMQPStorm==2.10.6
6
4
  rabbitpy==2.0.1
@@ -63,8 +63,8 @@ setup(
63
63
  ],
64
64
  install_requires=[
65
65
  'nb_log>=12.6',
66
- 'eventlet==0.33.3',
67
- 'gevent==22.10.2',
66
+ # 'eventlet==0.33.3',
67
+ # 'gevent==22.10.2',
68
68
  'pymongo==4.3.3', # 3.5.1 -> 4.0.2
69
69
  'AMQPStorm==2.10.6',
70
70
  'rabbitpy==2.0.1',
@@ -1,26 +0,0 @@
1
- from funboost.utils.decorators import cached_method_result
2
-
3
-
4
- class LazyImpoter:
5
- """
6
- 延迟导入,避免需要互相导入.
7
- """
8
-
9
- @property
10
- @cached_method_result
11
- def BoostersManager(self):
12
- from funboost.core.booster import BoostersManager
13
- return BoostersManager
14
-
15
- # @property
16
- # @cached_method_result
17
- # def get_current_taskid(self):
18
- # from funboost.core.current_task import get_current_taskid
19
- # return get_current_taskid
20
-
21
- lazy_impoter = LazyImpoter()
22
-
23
- if __name__ == '__main__':
24
- for i in range(10000):
25
- lazy_impoter.BoostersManager
26
- lazy_impoter.BoostersManager
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes