funboost 47.9__tar.gz → 48.0__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 (300) hide show
  1. {funboost-47.9/funboost.egg-info → funboost-48.0}/PKG-INFO +2 -2
  2. {funboost-47.9 → funboost-48.0}/README.md +6 -0
  3. {funboost-47.9 → funboost-48.0}/funboost/__init__.py +3 -3
  4. {funboost-47.9 → funboost-48.0}/funboost/assist/celery_helper.py +1 -1
  5. {funboost-47.9 → funboost-48.0}/funboost/consumers/base_consumer.py +3 -7
  6. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_consumer_ack_able.py +1 -1
  7. {funboost-47.9 → funboost-48.0}/funboost/core/current_task.py +37 -0
  8. {funboost-47.9 → funboost-48.0}/funboost/core/func_params_model.py +2 -2
  9. funboost-48.0/funboost/timing_job/__init__.py +6 -0
  10. {funboost-47.9 → funboost-48.0}/funboost/timing_job/apscheduler_use_redis_store.py +6 -1
  11. funboost-47.9/funboost/timing_job/__init__.py → funboost-48.0/funboost/timing_job/timing_job_base.py +4 -12
  12. funboost-48.0/funboost/timing_job/timing_push.py +136 -0
  13. {funboost-47.9 → funboost-48.0}/funboost/utils/ctrl_c_end.py +1 -1
  14. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/readme.md +6 -0
  15. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/readme.md +6 -0
  16. {funboost-47.9 → funboost-48.0/funboost.egg-info}/PKG-INFO +2 -2
  17. {funboost-47.9 → funboost-48.0}/funboost.egg-info/SOURCES.txt +2 -0
  18. {funboost-47.9 → funboost-48.0}/funboost.egg-info/requires.txt +1 -1
  19. {funboost-47.9 → funboost-48.0}/setup.py +1 -1
  20. {funboost-47.9 → funboost-48.0}/LICENSE +0 -0
  21. {funboost-47.9 → funboost-48.0}/MANIFEST.in +0 -0
  22. {funboost-47.9 → funboost-48.0}/funboost/__init__old.py +0 -0
  23. {funboost-47.9 → funboost-48.0}/funboost/__main__.py +0 -0
  24. {funboost-47.9 → funboost-48.0}/funboost/assist/__init__.py +0 -0
  25. {funboost-47.9 → funboost-48.0}/funboost/assist/dramatiq_helper.py +0 -0
  26. {funboost-47.9 → funboost-48.0}/funboost/assist/faststream_helper.py +0 -0
  27. {funboost-47.9 → funboost-48.0}/funboost/assist/huey_helper.py +0 -0
  28. {funboost-47.9 → funboost-48.0}/funboost/assist/rocketry_helper.py +0 -0
  29. {funboost-47.9 → funboost-48.0}/funboost/assist/rq_helper.py +0 -0
  30. {funboost-47.9 → funboost-48.0}/funboost/assist/rq_windows_worker.py +0 -0
  31. {funboost-47.9 → funboost-48.0}/funboost/assist/taskiq_helper.py +0 -0
  32. {funboost-47.9 → funboost-48.0}/funboost/beggar_version_implementation/beggar_redis_consumer.py +0 -0
  33. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/__init__.py +0 -0
  34. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/async_helper.py +0 -0
  35. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/async_pool_executor.py +0 -0
  36. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/backup/__init__.py +0 -0
  37. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/backup/async_pool_executor0223.py +0 -0
  38. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/backup/async_pool_executor_back.py +0 -0
  39. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/backup/async_pool_executor_janus.py +0 -0
  40. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/base_pool_type.py +0 -0
  41. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/bounded_processpoolexcutor_gt_py37.py +0 -0
  42. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/bounded_processpoolexcutor_py36.py +0 -0
  43. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/bounded_threadpoolexcutor.py +0 -0
  44. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/concurrent_pool_with_multi_process.py +0 -0
  45. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/custom_evenlet_pool_executor.py +0 -0
  46. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/custom_gevent_pool_executor.py +0 -0
  47. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/custom_threadpool_executor.py +0 -0
  48. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/custom_threadpool_executor000.py +0 -0
  49. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/fixed_thread_pool.py +0 -0
  50. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/flexible_thread_pool.py +0 -0
  51. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/pool_commons.py +0 -0
  52. {funboost-47.9 → funboost-48.0}/funboost/concurrent_pool/single_thread_executor.py +0 -0
  53. {funboost-47.9 → funboost-48.0}/funboost/constant.py +0 -0
  54. {funboost-47.9 → funboost-48.0}/funboost/consumers/__init__.py +0 -0
  55. {funboost-47.9 → funboost-48.0}/funboost/consumers/celery_consumer.py +0 -0
  56. {funboost-47.9 → funboost-48.0}/funboost/consumers/confirm_mixin.py +0 -0
  57. {funboost-47.9 → funboost-48.0}/funboost/consumers/dramatiq_consumer.py +0 -0
  58. {funboost-47.9 → funboost-48.0}/funboost/consumers/empty_consumer.py +0 -0
  59. {funboost-47.9 → funboost-48.0}/funboost/consumers/faststream_consumer.py +0 -0
  60. {funboost-47.9 → funboost-48.0}/funboost/consumers/http_consumer.py +0 -0
  61. {funboost-47.9 → funboost-48.0}/funboost/consumers/http_consumer000.py +0 -0
  62. {funboost-47.9 → funboost-48.0}/funboost/consumers/httpsqs_consumer.py +0 -0
  63. {funboost-47.9 → funboost-48.0}/funboost/consumers/huey_consumer.py +0 -0
  64. {funboost-47.9 → funboost-48.0}/funboost/consumers/kafka_consumer.py +0 -0
  65. {funboost-47.9 → funboost-48.0}/funboost/consumers/kafka_consumer_manually_commit.py +0 -0
  66. {funboost-47.9 → funboost-48.0}/funboost/consumers/kombu_consumer.py +0 -0
  67. {funboost-47.9 → funboost-48.0}/funboost/consumers/local_python_queue_consumer.py +0 -0
  68. {funboost-47.9 → funboost-48.0}/funboost/consumers/memory_deque_consumer.py +0 -0
  69. {funboost-47.9 → funboost-48.0}/funboost/consumers/mongomq_consumer.py +0 -0
  70. {funboost-47.9 → funboost-48.0}/funboost/consumers/mqtt_consumer.py +0 -0
  71. {funboost-47.9 → funboost-48.0}/funboost/consumers/nameko_consumer.py +0 -0
  72. {funboost-47.9 → funboost-48.0}/funboost/consumers/nats_consumer.py +0 -0
  73. {funboost-47.9 → funboost-48.0}/funboost/consumers/nsq_consumer.py +0 -0
  74. {funboost-47.9 → funboost-48.0}/funboost/consumers/peewee_conusmer.py +0 -0
  75. {funboost-47.9 → funboost-48.0}/funboost/consumers/persist_queue_consumer.py +0 -0
  76. {funboost-47.9 → funboost-48.0}/funboost/consumers/pulsar_consumer.py +0 -0
  77. {funboost-47.9 → funboost-48.0}/funboost/consumers/rabbitmq_amqpstorm_consumer.py +0 -0
  78. {funboost-47.9 → funboost-48.0}/funboost/consumers/rabbitmq_pika_consumer.py +0 -0
  79. {funboost-47.9 → funboost-48.0}/funboost/consumers/rabbitmq_pika_consumerv0.py +0 -0
  80. {funboost-47.9 → funboost-48.0}/funboost/consumers/rabbitmq_rabbitpy_consumer.py +0 -0
  81. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_brpoplpush_consumer.py +0 -0
  82. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_consumer.py +0 -0
  83. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_consumer_ack_using_timeout.py +0 -0
  84. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_consumer_priority.py +0 -0
  85. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_consumer_simple.py +0 -0
  86. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_filter.py +0 -0
  87. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_pubsub_consumer.py +0 -0
  88. {funboost-47.9 → funboost-48.0}/funboost/consumers/redis_stream_consumer.py +0 -0
  89. {funboost-47.9 → funboost-48.0}/funboost/consumers/rocketmq_consumer.py +0 -0
  90. {funboost-47.9 → funboost-48.0}/funboost/consumers/rq_consumer.py +0 -0
  91. {funboost-47.9 → funboost-48.0}/funboost/consumers/sqlachemy_consumer.py +0 -0
  92. {funboost-47.9 → funboost-48.0}/funboost/consumers/tcp_consumer.py +0 -0
  93. {funboost-47.9 → funboost-48.0}/funboost/consumers/txt_file_consumer.py +0 -0
  94. {funboost-47.9 → funboost-48.0}/funboost/consumers/udp_consumer.py +0 -0
  95. {funboost-47.9 → funboost-48.0}/funboost/consumers/zeromq_consumer.py +0 -0
  96. {funboost-47.9 → funboost-48.0}/funboost/contrib/__init__.py +0 -0
  97. {funboost-47.9 → funboost-48.0}/funboost/contrib/api_publish_msg.py +0 -0
  98. {funboost-47.9 → funboost-48.0}/funboost/contrib/django_db_deco.py +0 -0
  99. {funboost-47.9 → funboost-48.0}/funboost/contrib/queue2queue.py +0 -0
  100. {funboost-47.9 → funboost-48.0}/funboost/contrib/redis_consume_latest_msg_broker.py +0 -0
  101. {funboost-47.9 → funboost-48.0}/funboost/contrib/save_result_status_to_sqldb.py +0 -0
  102. {funboost-47.9 → funboost-48.0}/funboost/core/__init__.py +0 -0
  103. {funboost-47.9 → funboost-48.0}/funboost/core/active_cousumer_info_getter.py +0 -0
  104. {funboost-47.9 → funboost-48.0}/funboost/core/booster.py +0 -0
  105. {funboost-47.9 → funboost-48.0}/funboost/core/cli/__init__.py +0 -0
  106. {funboost-47.9 → funboost-48.0}/funboost/core/cli/discovery_boosters.py +0 -0
  107. {funboost-47.9 → funboost-48.0}/funboost/core/cli/funboost_cli_user_templ.py +0 -0
  108. {funboost-47.9 → funboost-48.0}/funboost/core/cli/funboost_fire.py +0 -0
  109. {funboost-47.9 → funboost-48.0}/funboost/core/exceptions.py +0 -0
  110. {funboost-47.9 → funboost-48.0}/funboost/core/fabric_deploy_helper.py +0 -0
  111. {funboost-47.9 → funboost-48.0}/funboost/core/funboost_config_getter.py +0 -0
  112. {funboost-47.9 → funboost-48.0}/funboost/core/funboost_time.py +0 -0
  113. {funboost-47.9 → funboost-48.0}/funboost/core/function_result_status_config.py +0 -0
  114. {funboost-47.9 → funboost-48.0}/funboost/core/function_result_status_saver.py +0 -0
  115. {funboost-47.9 → funboost-48.0}/funboost/core/helper_funs.py +0 -0
  116. {funboost-47.9 → funboost-48.0}/funboost/core/kill_remote_task.py +0 -0
  117. {funboost-47.9 → funboost-48.0}/funboost/core/lazy_impoter.py +0 -0
  118. {funboost-47.9 → funboost-48.0}/funboost/core/loggers.py +0 -0
  119. {funboost-47.9 → funboost-48.0}/funboost/core/msg_result_getter.py +0 -0
  120. {funboost-47.9 → funboost-48.0}/funboost/core/muliti_process_enhance.py +0 -0
  121. {funboost-47.9 → funboost-48.0}/funboost/core/serialization.py +0 -0
  122. {funboost-47.9 → funboost-48.0}/funboost/core/task_id_logger.py +0 -0
  123. {funboost-47.9 → funboost-48.0}/funboost/factories/__init__.py +0 -0
  124. {funboost-47.9 → funboost-48.0}/funboost/factories/broker_kind__publsiher_consumer_type_map.py +0 -0
  125. {funboost-47.9 → funboost-48.0}/funboost/factories/consumer_factory.py +0 -0
  126. {funboost-47.9 → funboost-48.0}/funboost/factories/publisher_factotry.py +0 -0
  127. {funboost-47.9 → funboost-48.0}/funboost/funboost_config_deafult.py +0 -0
  128. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/__pycache__/app.cpython-37.pyc +0 -0
  129. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/__pycache__/functions.cpython-37.pyc +0 -0
  130. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/app.py +0 -0
  131. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/functions.py +0 -0
  132. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/assets/css/custom.css +0 -0
  133. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/assets/css/jquery.mCustomScrollbar.min.css +0 -0
  134. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/assets/img/user.jpg +0 -0
  135. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/assets/js/custom.js +0 -0
  136. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/assets/js/jquery.mCustomScrollbar.concat.min.js +0 -0
  137. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/css/style.css +0 -0
  138. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/images/bg.jpg +0 -0
  139. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/images/password.png +0 -0
  140. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/images/tick.png +0 -0
  141. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/images/user.png +0 -0
  142. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/static/js/jquery-1.11.0.min.js +0 -0
  143. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/templates/index.html +0 -0
  144. {funboost-47.9 → funboost-48.0}/funboost/function_result_web/templates/login.html +0 -0
  145. {funboost-47.9 → funboost-48.0}/funboost/publishers/__init__.py +0 -0
  146. {funboost-47.9 → funboost-48.0}/funboost/publishers/base_publisher.py +0 -0
  147. {funboost-47.9 → funboost-48.0}/funboost/publishers/celery_publisher.py +0 -0
  148. {funboost-47.9 → funboost-48.0}/funboost/publishers/celery_publisher000.py +0 -0
  149. {funboost-47.9 → funboost-48.0}/funboost/publishers/confluent_kafka_publisher.py +0 -0
  150. {funboost-47.9 → funboost-48.0}/funboost/publishers/dramatiq_publisher.py +0 -0
  151. {funboost-47.9 → funboost-48.0}/funboost/publishers/empty_publisher.py +0 -0
  152. {funboost-47.9 → funboost-48.0}/funboost/publishers/faststream_publisher.py +0 -0
  153. {funboost-47.9 → funboost-48.0}/funboost/publishers/http_publisher.py +0 -0
  154. {funboost-47.9 → funboost-48.0}/funboost/publishers/httpsqs_publisher.py +0 -0
  155. {funboost-47.9 → funboost-48.0}/funboost/publishers/huey_publisher.py +0 -0
  156. {funboost-47.9 → funboost-48.0}/funboost/publishers/kafka_publisher.py +0 -0
  157. {funboost-47.9 → funboost-48.0}/funboost/publishers/kombu_publisher.py +0 -0
  158. {funboost-47.9 → funboost-48.0}/funboost/publishers/local_python_queue_publisher.py +0 -0
  159. {funboost-47.9 → funboost-48.0}/funboost/publishers/meomory_deque_publisher.py +0 -0
  160. {funboost-47.9 → funboost-48.0}/funboost/publishers/mongomq_publisher.py +0 -0
  161. {funboost-47.9 → funboost-48.0}/funboost/publishers/mqtt_publisher.py +0 -0
  162. {funboost-47.9 → funboost-48.0}/funboost/publishers/nameko_publisher.py +0 -0
  163. {funboost-47.9 → funboost-48.0}/funboost/publishers/nats_publisher.py +0 -0
  164. {funboost-47.9 → funboost-48.0}/funboost/publishers/nsq_publisher.py +0 -0
  165. {funboost-47.9 → funboost-48.0}/funboost/publishers/peewee_publisher.py +0 -0
  166. {funboost-47.9 → funboost-48.0}/funboost/publishers/persist_queue_publisher.py +0 -0
  167. {funboost-47.9 → funboost-48.0}/funboost/publishers/pulsar_publisher.py +0 -0
  168. {funboost-47.9 → funboost-48.0}/funboost/publishers/rabbitmq_amqpstorm_publisher.py +0 -0
  169. {funboost-47.9 → funboost-48.0}/funboost/publishers/rabbitmq_pika_publisher.py +0 -0
  170. {funboost-47.9 → funboost-48.0}/funboost/publishers/rabbitmq_rabbitpy_publisher.py +0 -0
  171. {funboost-47.9 → funboost-48.0}/funboost/publishers/redis_publisher.py +0 -0
  172. {funboost-47.9 → funboost-48.0}/funboost/publishers/redis_publisher_lpush.py +0 -0
  173. {funboost-47.9 → funboost-48.0}/funboost/publishers/redis_publisher_priority.py +0 -0
  174. {funboost-47.9 → funboost-48.0}/funboost/publishers/redis_publisher_simple.py +0 -0
  175. {funboost-47.9 → funboost-48.0}/funboost/publishers/redis_pubsub_publisher.py +0 -0
  176. {funboost-47.9 → funboost-48.0}/funboost/publishers/redis_queue_flush_mixin.py +0 -0
  177. {funboost-47.9 → funboost-48.0}/funboost/publishers/redis_stream_publisher.py +0 -0
  178. {funboost-47.9 → funboost-48.0}/funboost/publishers/rocketmq_publisher.py +0 -0
  179. {funboost-47.9 → funboost-48.0}/funboost/publishers/rq_publisher.py +0 -0
  180. {funboost-47.9 → funboost-48.0}/funboost/publishers/sqla_queue_publisher.py +0 -0
  181. {funboost-47.9 → funboost-48.0}/funboost/publishers/tcp_publisher.py +0 -0
  182. {funboost-47.9 → funboost-48.0}/funboost/publishers/txt_file_publisher.py +0 -0
  183. {funboost-47.9 → funboost-48.0}/funboost/publishers/udp_publisher.py +0 -0
  184. {funboost-47.9 → funboost-48.0}/funboost/publishers/zeromq_publisher.py +0 -0
  185. {funboost-47.9 → funboost-48.0}/funboost/queues/__init__.py +0 -0
  186. {funboost-47.9 → funboost-48.0}/funboost/queues/memory_queues_map.py +0 -0
  187. {funboost-47.9 → funboost-48.0}/funboost/queues/peewee_queue.py +0 -0
  188. {funboost-47.9 → funboost-48.0}/funboost/queues/sqla_queue.py +0 -0
  189. {funboost-47.9 → funboost-48.0}/funboost/set_frame_config.py +0 -0
  190. {funboost-47.9 → funboost-48.0}/funboost/timing_job/apscheduler_use_mysql_store.py +0 -0
  191. {funboost-47.9 → funboost-48.0}/funboost/utils/__init__.py +0 -0
  192. {funboost-47.9 → funboost-48.0}/funboost/utils/apscheduler_monkey.py +0 -0
  193. {funboost-47.9 → funboost-48.0}/funboost/utils/block_exit.py +0 -0
  194. {funboost-47.9 → funboost-48.0}/funboost/utils/bulk_operation.py +0 -0
  195. {funboost-47.9 → funboost-48.0}/funboost/utils/class_utils.py +0 -0
  196. {funboost-47.9 → funboost-48.0}/funboost/utils/class_utils2.py +0 -0
  197. {funboost-47.9 → funboost-48.0}/funboost/utils/custom_pysnooper.py +0 -0
  198. {funboost-47.9 → funboost-48.0}/funboost/utils/decorators.py +0 -0
  199. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages/__init__.py +0 -0
  200. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages/mongomq/__init__.py +0 -0
  201. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages/mongomq/lock.py +0 -0
  202. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages/mongomq/mongomq.py +0 -0
  203. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages/mongomq/mongomq0000.py +0 -0
  204. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages/mongomq/test.py +0 -0
  205. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages/mongomq/utils.py +0 -0
  206. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/__init__.py +0 -0
  207. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-311.pyc +0 -0
  208. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-37.pyc +0 -0
  209. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/__init__.cpython-39.pyc +0 -0
  210. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-311.pyc +0 -0
  211. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-37.pyc +0 -0
  212. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/__pycache__/add_to_pythonpath.cpython-39.pyc +0 -0
  213. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/add_to_pythonpath.py +0 -0
  214. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__init__.py +0 -0
  215. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-311.pyc +0 -0
  216. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-37.pyc +0 -0
  217. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/__init__.cpython-39.pyc +0 -0
  218. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-311.pyc +0 -0
  219. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-37.pyc +0 -0
  220. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/client.cpython-39.pyc +0 -0
  221. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-311.pyc +0 -0
  222. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-37.pyc +0 -0
  223. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/compat.cpython-39.pyc +0 -0
  224. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-311.pyc +0 -0
  225. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-37.pyc +0 -0
  226. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/connection.cpython-39.pyc +0 -0
  227. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-311.pyc +0 -0
  228. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-37.pyc +0 -0
  229. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/exceptions.cpython-39.pyc +0 -0
  230. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-311.pyc +0 -0
  231. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-37.pyc +0 -0
  232. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/lock.cpython-39.pyc +0 -0
  233. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-311.pyc +0 -0
  234. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-37.pyc +0 -0
  235. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/__pycache__/utils.cpython-39.pyc +0 -0
  236. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/client.py +0 -0
  237. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/compat.py +0 -0
  238. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/connection.py +0 -0
  239. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/exceptions.py +0 -0
  240. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/lock.py +0 -0
  241. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/log.py +0 -0
  242. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/py.typed +0 -0
  243. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/sentinel.py +0 -0
  244. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/aioredis/utils.py +0 -0
  245. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/StoppableThread.py +0 -0
  246. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__init__.py +0 -0
  247. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-311.pyc +0 -0
  248. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-37.pyc +0 -0
  249. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/StoppableThread.cpython-39.pyc +0 -0
  250. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-311.pyc +0 -0
  251. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-37.pyc +0 -0
  252. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/__init__.cpython-39.pyc +0 -0
  253. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-311.pyc +0 -0
  254. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-37.pyc +0 -0
  255. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/dafunc.cpython-39.pyc +0 -0
  256. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-311.pyc +0 -0
  257. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-37.pyc +0 -0
  258. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/exceptions.cpython-39.pyc +0 -0
  259. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-311.pyc +0 -0
  260. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-37.pyc +0 -0
  261. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/__pycache__/py3_raise.cpython-39.pyc +0 -0
  262. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc.py +0 -0
  263. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/dafunc2222.py +0 -0
  264. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/exceptions.py +0 -0
  265. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py2_raise.py +0 -0
  266. {funboost-47.9 → funboost-48.0}/funboost/utils/dependency_packages_in_pythonpath/func_timeout/py3_raise.py +0 -0
  267. {funboost-47.9 → funboost-48.0}/funboost/utils/develop_log.py +0 -0
  268. {funboost-47.9 → funboost-48.0}/funboost/utils/expire_lock.py +0 -0
  269. {funboost-47.9 → funboost-48.0}/funboost/utils/func_timeout/StoppableThread.py +0 -0
  270. {funboost-47.9 → funboost-48.0}/funboost/utils/func_timeout/__init__.py +0 -0
  271. {funboost-47.9 → funboost-48.0}/funboost/utils/func_timeout/dafunc.py +0 -0
  272. {funboost-47.9 → funboost-48.0}/funboost/utils/func_timeout/exceptions.py +0 -0
  273. {funboost-47.9 → funboost-48.0}/funboost/utils/func_timeout/py2_raise.py +0 -0
  274. {funboost-47.9 → funboost-48.0}/funboost/utils/func_timeout/py3_raise.py +0 -0
  275. {funboost-47.9 → funboost-48.0}/funboost/utils/json_helper.py +0 -0
  276. {funboost-47.9 → funboost-48.0}/funboost/utils/mongo_util.py +0 -0
  277. {funboost-47.9 → funboost-48.0}/funboost/utils/monkey_color_log.py +0 -0
  278. {funboost-47.9 → funboost-48.0}/funboost/utils/monkey_patches.py +0 -0
  279. {funboost-47.9 → funboost-48.0}/funboost/utils/mqtt_util.py +0 -0
  280. {funboost-47.9 → funboost-48.0}/funboost/utils/paramiko_util.py +0 -0
  281. {funboost-47.9 → funboost-48.0}/funboost/utils/pysnooper_ydf/__init__.py +0 -0
  282. {funboost-47.9 → funboost-48.0}/funboost/utils/pysnooper_ydf/pycompat.py +0 -0
  283. {funboost-47.9 → funboost-48.0}/funboost/utils/pysnooper_ydf/tracer.py +0 -0
  284. {funboost-47.9 → funboost-48.0}/funboost/utils/pysnooper_ydf/utils.py +0 -0
  285. {funboost-47.9 → funboost-48.0}/funboost/utils/pysnooper_ydf/variables.py +0 -0
  286. {funboost-47.9 → funboost-48.0}/funboost/utils/rabbitmq_factory.py +0 -0
  287. {funboost-47.9 → funboost-48.0}/funboost/utils/redis_manager.py +0 -0
  288. {funboost-47.9 → funboost-48.0}/funboost/utils/redis_manager_old.py +0 -0
  289. {funboost-47.9 → funboost-48.0}/funboost/utils/resource_monitoring.py +0 -0
  290. {funboost-47.9 → funboost-48.0}/funboost/utils/restart_python.py +0 -0
  291. {funboost-47.9 → funboost-48.0}/funboost/utils/simple_data_class.py +0 -0
  292. {funboost-47.9 → funboost-48.0}/funboost/utils/str_utils.py +0 -0
  293. {funboost-47.9 → funboost-48.0}/funboost/utils/time_util.py +0 -0
  294. {funboost-47.9 → funboost-48.0}/funboost/utils/times/__init__.py +0 -0
  295. {funboost-47.9 → funboost-48.0}/funboost/utils/times/version.py +0 -0
  296. {funboost-47.9 → funboost-48.0}/funboost/utils/un_strict_json_dumps.py +0 -0
  297. {funboost-47.9 → funboost-48.0}/funboost.egg-info/dependency_links.txt +0 -0
  298. {funboost-47.9 → funboost-48.0}/funboost.egg-info/entry_points.txt +0 -0
  299. {funboost-47.9 → funboost-48.0}/funboost.egg-info/top_level.txt +0 -0
  300. {funboost-47.9 → funboost-48.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 47.9
3
+ Version: 48.0
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -44,7 +44,7 @@ Requires-Dist: redis3
44
44
  Requires-Dist: redis5
45
45
  Requires-Dist: redis
46
46
  Requires-Dist: setuptools_rust
47
- Requires-Dist: fabric2==2.6.0
47
+ Requires-Dist: fabric2>=2.6.0
48
48
  Requires-Dist: nb_filelock
49
49
  Requires-Dist: pysnooper
50
50
  Requires-Dist: deprecated
@@ -1,3 +1,9 @@
1
+ ---
2
+ noteId: "5f9681b0e9bb11efa4500f7226f4d3b6"
3
+ tags: []
4
+
5
+ ---
6
+
1
7
 
2
8
 
3
9
  # 1.python万能分布式函数调度框架简funboost简介
@@ -13,7 +13,7 @@ set_frame_config这个模块的 use_config_form_funboost_config_module() 是核
13
13
  这段注释说明和使用的用户无关,只和框架开发人员有关.
14
14
  '''
15
15
 
16
- __version__ = "47.9"
16
+ __version__ = "48.0"
17
17
 
18
18
  from funboost.set_frame_config import show_frame_config
19
19
 
@@ -42,7 +42,7 @@ from funboost.factories.broker_kind__publsiher_consumer_type_map import register
42
42
  from funboost.factories.publisher_factotry import get_publisher
43
43
  from funboost.factories.consumer_factory import get_consumer
44
44
 
45
- from funboost.timing_job import fsdf_background_scheduler, timing_publish_deco, funboost_aps_scheduler
45
+ from funboost.timing_job import fsdf_background_scheduler, timing_publish_deco, funboost_aps_scheduler,ApsJobAdder
46
46
  from funboost.constant import BrokerEnum, ConcurrentModeEnum
47
47
 
48
48
  from funboost.core.booster import boost, Booster, BoostersManager
@@ -58,7 +58,7 @@ from funboost.utils.ctrl_c_end import ctrl_c_recv
58
58
  from funboost.utils.redis_manager import RedisMixin
59
59
  from funboost.concurrent_pool.custom_threadpool_executor import show_current_threads_num
60
60
 
61
- from funboost.core.current_task import funboost_current_task
61
+ from funboost.core.current_task import funboost_current_task,fct,get_current_taskid
62
62
 
63
63
 
64
64
  # atexit.register(ctrl_c_recv) # 还是需要用户自己在代码末尾加才可以.
@@ -85,7 +85,7 @@ class CeleryHelper:
85
85
 
86
86
  if is_start_consume_all_queues is False:
87
87
  to_be_start_work_celery_queue_name_set_new = copy.copy(cls.to_be_start_work_celery_queue_name_set)
88
- to_be_start_work_celery_queue_name_set_new.update(set(start_consume_queue_name_list))
88
+ to_be_start_work_celery_queue_name_set_new.update(set(start_consume_queue_name_list or []))
89
89
  else:
90
90
  from funboost import BoostersManager
91
91
  # print(BoostersManager.get_all_queues())
@@ -403,13 +403,9 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
403
403
  logger_apscheduler = get_logger('push_for_apscheduler_use_database_store', log_filename='push_for_apscheduler_use_database_store.log')
404
404
 
405
405
  @classmethod
406
- def _push_apscheduler_task_to_broker(cls, queue_name, msg, runonce_uuid):
406
+ def _push_apscheduler_task_to_broker(cls, queue_name, msg):
407
407
  funboost_lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name).publish(msg)
408
- # key = 'apscheduler.redisjobstore_runonce'
409
- # if RedisMixin().redis_db_frame.sadd(key, runonce_uuid): # 这样可以阻止多次启动同队列名消费者 redis jobstore多次运行函数.
410
- # cls.logger_apscheduler.debug(f'延时任务用普通消息重新发布到普通队列 {msg}')
411
- # funboost_lazy_impoter.BoostersManager.get_or_create_booster_by_queue_name(queue_name).publish(msg)
412
-
408
+
413
409
  @abc.abstractmethod
414
410
  def _shedual_task(self):
415
411
  """
@@ -512,7 +508,7 @@ class AbstractConsumer(LoggerLevelSetterMixin, metaclass=abc.ABCMeta, ):
512
508
  # print(msg_no_delay)
513
509
  # 数据库作为apscheduler的jobstores时候, 不能用 self.pbulisher_of_same_queue.publish,self不能序列化
514
510
  self._delay_task_scheduler.add_job(self._push_apscheduler_task_to_broker, 'date', run_date=run_date,
515
- kwargs={'queue_name': self.queue_name, 'msg': msg_no_delay, 'runonce_uuid': str(uuid.uuid4())},
511
+ kwargs={'queue_name': self.queue_name, 'msg': msg_no_delay, },
516
512
  misfire_grace_time=misfire_grace_time,
517
513
  )
518
514
  self._confirm_consume(kw)
@@ -126,7 +126,7 @@ class RedisConsumerAckAble(ConsumerConfirmMixinWithTheHelpOfRedisByHearbeat, Abs
126
126
  pull_msg_batch_size = self.consumer_params.broker_exclusive_config['pull_msg_batch_size']
127
127
  lua = f'''
128
128
  local task_list = redis.call("lrange", KEYS[1],0,{pull_msg_batch_size-1})
129
- redis.call("ltrim", KEYS[1],100,-1)
129
+ redis.call("ltrim", KEYS[1],{pull_msg_batch_size},-1)
130
130
  if (#task_list > 0) then
131
131
  for task_index,task_value in ipairs(task_list)
132
132
  do
@@ -158,6 +158,43 @@ def funboost_current_task():
158
158
  else:
159
159
  return thread_current_task
160
160
 
161
+ class _FctProxy:
162
+ """后来多新增这个类了,"""
163
+ @property
164
+ def fct_context(self) ->FctContext:
165
+ ct = funboost_current_task()
166
+ return ct.get_fct_context()
167
+
168
+ @property
169
+ def function_params(self):
170
+ return self.fct_context.function_params
171
+
172
+ @property
173
+ def full_msg(self) -> dict:
174
+ return self.fct_context.full_msg
175
+
176
+ @property
177
+ def function_result_status(self) -> FunctionResultStatus:
178
+ return self.fct_context.function_result_status
179
+
180
+ @property
181
+ def task_id(self) -> FunctionResultStatus:
182
+ return self.fct_context.function_result_status.task_id
183
+
184
+ @property
185
+ def logger(self) -> logging.Logger:
186
+ return self.fct_context.logger
187
+
188
+ def __str__(self):
189
+ return f'<{self.__class__.__name__} [{self.function_result_status.get_status_dict()}]>'
190
+
191
+ """
192
+ 可以直接导入这个fct,不需要 手动写 fct = funboost_current_task() 了。 直接 from funboost import fct就完了,不需要先 fct = funboost_current_task()。
193
+ funboost的fct 相当于flask的request那种对象 ,自动线程/协程 级别隔离。 多个线程不会互相干扰。
194
+ """
195
+ fct = _FctProxy()
196
+
197
+
161
198
 
162
199
  def get_current_taskid():
163
200
  # return fct.function_result_status.task_id
@@ -207,13 +207,13 @@ class BoosterParams(BaseJsonAbleModel):
207
207
  # func_params_is_pydantic_model: bool = False # funboost 兼容支持 函数娼还是 pydantic model类型,funboost在发布之前和取出来时候自己转化。
208
208
 
209
209
  consuming_function_kind: typing.Optional[str] = None # 自动生成的信息,不需要用户主动传参,如果自动判断失误就传递。是判断消费函数是函数还是实例方法还是类方法。如果传递了,就不自动获取函数类型。
210
- ''' consuming_function_kind 可以为以下类型,
210
+ """ consuming_function_kind 可以为以下类型,
211
211
  class FunctionKind:
212
212
  CLASS_METHOD = 'CLASS_METHOD'
213
213
  INSTANCE_METHOD = 'INSTANCE_METHOD'
214
214
  STATIC_METHOD = 'STATIC_METHOD'
215
215
  COMMON_FUNCTION = 'COMMON_FUNCTION'
216
- '''
216
+ """
217
217
 
218
218
  auto_generate_info: dict = {} # 自动生成的信息,不需要用户主动传参.
219
219
 
@@ -0,0 +1,6 @@
1
+ from funboost.timing_job.timing_job_base import (FsdfBackgroundScheduler ,
2
+ funboost_aps_scheduler ,fsdf_background_scheduler,timing_publish_deco,FunboostBackgroundScheduler,push_fun_params_to_broker )
3
+
4
+
5
+
6
+ from funboost.timing_job.timing_push import ApsJobAdder
@@ -5,6 +5,7 @@ from funboost.timing_job import FunboostBackgroundScheduler
5
5
  from funboost.funboost_config_deafult import BrokerConnConfig, FunboostCommonConfig
6
6
  from funboost.utils.decorators import RedisDistributedBlockLockContextManager
7
7
 
8
+
8
9
  """
9
10
  这个是使用redis作为定时任务持久化,支持跨机器好跨进程,外部远程 动态修改/添加/删除定时任务
10
11
  """
@@ -51,8 +52,12 @@ jobstores = {
51
52
 
52
53
  funboost_background_scheduler_redis_store = FunboostBackgroundSchedulerProcessJobsWithinRedisLock(timezone=FunboostCommonConfig.TIMEZONE, daemon=False, jobstores=jobstores)
53
54
 
54
- """
55
55
 
56
+
57
+
58
+
59
+
60
+ """
56
61
  跨python解释器 跨机器动态修改定时任务配置的例子在
57
62
 
58
63
  test_frame/test_apschedual/test_aps_redis_store.py
@@ -39,19 +39,13 @@ def timing_publish_deco(consuming_func_decorated_or_consumer: Union[callable, Ab
39
39
  return _deco
40
40
 
41
41
 
42
- def push_fun_params_to_broker(queue_name: str, *args, runonce_uuid=None, **kwargs):
42
+ def push_fun_params_to_broker(queue_name: str, *args, **kwargs):
43
43
  """
44
44
  queue_name 队列名字
45
45
  *args **kwargs 是消费函数的入参
46
- 发布消息中可以包括,runonce_uuid这个入参,确保分布式多个脚本都启动了定时器,导致每个定时器重复发布到消息队列,值你自己写 str(uuid.uuid4())
47
- # 不需要传递 runonce_uuid 了,已经用专门的 FunboostBackgroundSchedulerProcessJobsWithinRedisLock 解决了。
48
46
  """
49
- if runonce_uuid: # 不需要传递 runonce_uuid 了,已经用专门的 FunboostBackgroundSchedulerProcessJobsWithinRedisLock 解决了 process_jobs的问题。
50
- key = 'apscheduler.redisjobstore_runonce2'
51
- if RedisMixin().redis_db_frame.sadd(key, runonce_uuid):
52
- BoostersManager.get_or_create_booster_by_queue_name(queue_name).push(*args, **kwargs)
53
- else:
54
- BoostersManager.get_or_create_booster_by_queue_name(queue_name).push(*args, **kwargs)
47
+
48
+ BoostersManager.get_or_create_booster_by_queue_name(queue_name).push(*args, **kwargs)
55
49
 
56
50
 
57
51
  class ThreadPoolExecutorForAps(BasePoolExecutor):
@@ -89,7 +83,7 @@ class FunboostBackgroundScheduler(BackgroundScheduler):
89
83
  next_run_time, jobstore, executor,
90
84
  replace_existing, **trigger_args)
91
85
 
92
- def add_push_job(self, func: Booster, trigger=None, args=None, kwargs=None, runonce_uuid=None,
86
+ def add_push_job(self, func: Booster, trigger=None, args=None, kwargs=None,
93
87
  id=None, name=None,
94
88
  misfire_grace_time=undefined, coalesce=undefined, max_instances=undefined,
95
89
  next_run_time=undefined, jobstore='default', executor='default',
@@ -123,8 +117,6 @@ class FunboostBackgroundScheduler(BackgroundScheduler):
123
117
  args_list = list(args)
124
118
  args_list.insert(0, func.queue_name)
125
119
  args = tuple(args_list)
126
- kwargs = kwargs or {}
127
- kwargs['runonce_uuid'] = runonce_uuid # 忽略,用户不需要传递runonce_uuid入参。
128
120
  return self.add_job(push_fun_params_to_broker, trigger, args, kwargs, id, name,
129
121
  misfire_grace_time, coalesce, max_instances,
130
122
  next_run_time, jobstore, executor,
@@ -0,0 +1,136 @@
1
+ from funboost.utils import redis_manager
2
+ from funboost.core.booster import BoostersManager, Booster
3
+
4
+ from apscheduler.jobstores.redis import RedisJobStore
5
+ from funboost.timing_job.timing_job_base import funboost_aps_scheduler, undefined
6
+ from funboost.timing_job.apscheduler_use_redis_store import FunboostBackgroundSchedulerProcessJobsWithinRedisLock
7
+ from funboost.funboost_config_deafult import FunboostCommonConfig
8
+
9
+
10
+ class ApsJobAdder:
11
+ """
12
+ 20250116新增加的统一的新增定时任务的方式,推荐这种方式。
13
+ 用户不用像之前再去关心使用哪个apscheduler对象去添加定时任务了。
14
+
15
+ 例如 add_numbers 是@boost装饰的消费函数
16
+ ApsJobAdder(add_numbers,job_store_kind='memory').add_push_job(
17
+ args=(1, 2),
18
+ trigger='date', # 使用日期触发器
19
+ run_date='2025-01-16 18:23:50', # 设置运行时间
20
+ # id='add_numbers_job' # 任务ID
21
+ )
22
+
23
+ """
24
+
25
+ queue__redis_aps_map = {}
26
+
27
+ def __init__(self, booster: Booster, job_store_kind: str = 'memory'):
28
+ """
29
+ Initialize the ApsJobAdder.
30
+
31
+ :param booster: A Booster object representing the function to be scheduled.
32
+ :param job_store_kind: The type of job store to use. Default is 'memory'.
33
+ Can be 'memory' or 'redis'.
34
+ """
35
+ self.booster = booster
36
+ self.job_store_kind = job_store_kind
37
+
38
+ @classmethod
39
+ def get_funboost_redis_apscheduler(cls, queue_name):
40
+ """
41
+ 每个队列名字的定时任务用不同的redis jobstore的 jobs_key 和 run_times_key,防止互相干扰和取出不属于自己的任务
42
+ """
43
+ if queue_name in cls.queue__redis_aps_map:
44
+ return cls.queue__redis_aps_map[queue_name]
45
+ redis_jobstores = {
46
+
47
+ "default": RedisJobStore(**redis_manager.get_redis_conn_kwargs(),
48
+ jobs_key=f'funboost.apscheduler.{queue_name}.jobs',
49
+ run_times_key=f'funboost.apscheduler.{queue_name}.run_times',
50
+ )
51
+ }
52
+ redis_aps = FunboostBackgroundSchedulerProcessJobsWithinRedisLock(timezone=FunboostCommonConfig.TIMEZONE,
53
+ daemon=False, jobstores=redis_jobstores)
54
+ cls.queue__redis_aps_map[queue_name] = redis_aps
55
+ return redis_aps
56
+
57
+ @property
58
+ def aps_obj(self):
59
+ if self.job_store_kind == 'redis':
60
+ return self.get_funboost_redis_apscheduler(self.booster.queue_name)
61
+ elif self.job_store_kind == 'memory':
62
+ return funboost_aps_scheduler
63
+ else:
64
+ raise ValueError('Unsupported job_store_kind')
65
+
66
+ def add_push_job(self, trigger=None, args=None, kwargs=None,
67
+ id=None, name=None,
68
+ misfire_grace_time=undefined, coalesce=undefined, max_instances=undefined,
69
+ next_run_time=undefined, jobstore='default', executor='default',
70
+ replace_existing=False, **trigger_args,):
71
+ """
72
+ 这里的入参都是和apscheduler的add_job的入参一样的,funboost作者没有创造新的入参。
73
+ 但是官方apscheduler的入参第一个入参是函数,
74
+ funboost的ApsJobAdder对象.add_push_job入参去掉了函数,因为类的实例化时候会把函数传进来,不需要再麻烦用户一次了。
75
+ """
76
+
77
+ if not getattr(self.aps_obj, 'has_started_flag', False):
78
+ self.aps_obj.has_started_flag = True
79
+ self.aps_obj.start(paused=False)
80
+ return self.aps_obj.add_push_job(self.booster, trigger, args, kwargs, id, name,
81
+ misfire_grace_time, coalesce, max_instances,
82
+ next_run_time, jobstore, executor,
83
+ replace_existing, **trigger_args, )
84
+
85
+
86
+
87
+
88
+
89
+ if __name__ == '__main__':
90
+ """
91
+ 2025年后定时任务现在推荐使用 ApsJobAdder 写法 ,用户不需要亲自选择使用 apscheduler对象来添加定时任务
92
+ """
93
+ from funboost import boost, BrokerEnum,ctrl_c_recv,BoosterParams,ApsJobAdder
94
+
95
+
96
+ # 定义任务处理函数
97
+ @BoosterParams(queue_name='sum_queue3', broker_kind=BrokerEnum.REDIS)
98
+ def sum_two_numbers(x, y):
99
+ result = x + y
100
+ print(f'The sum of {x} and {y} is {result}')
101
+
102
+ # 启动消费者
103
+ sum_two_numbers.consume()
104
+
105
+ # 发布任务
106
+ sum_two_numbers.push(3, 5)
107
+ sum_two_numbers.push(10, 20)
108
+
109
+ # 使用ApsJobAdder添加定时任务, 里面的定时语法,和apscheduler是一样的,用户需要自己熟悉知名框架apscheduler的add_job定时入参
110
+
111
+ # 方式1:指定日期执行一次
112
+ ApsJobAdder(sum_two_numbers, job_store_kind='redis').add_push_job(
113
+ trigger='date',
114
+ run_date='2025-01-17 23:25:40',
115
+ args=(7, 8)
116
+ )
117
+
118
+ # 方式2:固定间隔执行
119
+ ApsJobAdder(sum_two_numbers, job_store_kind='memory').add_push_job(
120
+ trigger='interval',
121
+ seconds=5,
122
+ args=(4, 6)
123
+ )
124
+
125
+ # 方式3:使用cron表达式定时执行
126
+ ApsJobAdder(sum_two_numbers, job_store_kind='redis').add_push_job(
127
+ trigger='cron',
128
+ day_of_week='*',
129
+ hour=23,
130
+ minute=49,
131
+ second=50,
132
+ kwargs={"x":50,"y":60},
133
+ replace_existing=True,
134
+ id='cron_job1')
135
+
136
+ ctrl_c_recv()
@@ -4,7 +4,7 @@ import time
4
4
 
5
5
 
6
6
  def ctrl_c_recv():
7
- for i in range(4):
7
+ for i in range(3):
8
8
  while 1:
9
9
  try:
10
10
  time.sleep(2)
@@ -1,3 +1,9 @@
1
+ ---
2
+ noteId: "6116b910e9bb11efa4500f7226f4d3b6"
3
+ tags: []
4
+
5
+ ---
6
+
1
7
 
2
8
  ## 1 asioredis包将不再更新 ,ptyhon 3.11 版本 import aioredis会出错。
3
9
 
@@ -1,3 +1,9 @@
1
+ ---
2
+ noteId: "6116b911e9bb11efa4500f7226f4d3b6"
3
+ tags: []
4
+
5
+ ---
6
+
1
7
  ## 这个文件夹被添加到 sys.path中去了。
2
8
 
3
9
  funboost __init__.py 第一行就把这个添加到 sys.path了,相当于 export PYTHONPATH 了。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: funboost
3
- Version: 47.9
3
+ Version: 48.0
4
4
  Summary: pip install funboost,python全功能分布式函数调度框架,funboost的功能是全面性重量级,用户能想得到的功能99%全都有;funboost的使用方式是轻量级,只有@boost一行代码需要写。支持python所有类型的并发模式和一切知名消息队列中间件,支持如 celery dramatiq等框架整体作为funboost中间件,python函数加速器,框架包罗万象,用户能想到的控制功能全都有。一统编程思维,兼容50% python业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数,99%用过funboost的pythoner 感受是 简易 方便 强劲 强大,相见恨晚
5
5
  Home-page: https://github.com/ydf0509/funboost
6
6
  Author: bfzs
@@ -44,7 +44,7 @@ Requires-Dist: redis3
44
44
  Requires-Dist: redis5
45
45
  Requires-Dist: redis
46
46
  Requires-Dist: setuptools_rust
47
- Requires-Dist: fabric2==2.6.0
47
+ Requires-Dist: fabric2>=2.6.0
48
48
  Requires-Dist: nb_filelock
49
49
  Requires-Dist: pysnooper
50
50
  Requires-Dist: deprecated
@@ -185,6 +185,8 @@ funboost/queues/sqla_queue.py
185
185
  funboost/timing_job/__init__.py
186
186
  funboost/timing_job/apscheduler_use_mysql_store.py
187
187
  funboost/timing_job/apscheduler_use_redis_store.py
188
+ funboost/timing_job/timing_job_base.py
189
+ funboost/timing_job/timing_push.py
188
190
  funboost/utils/__init__.py
189
191
  funboost/utils/apscheduler_monkey.py
190
192
  funboost/utils/block_exit.py
@@ -15,7 +15,7 @@ redis3
15
15
  redis5
16
16
  redis
17
17
  setuptools_rust
18
- fabric2==2.6.0
18
+ fabric2>=2.6.0
19
19
  nb_filelock
20
20
  pysnooper
21
21
  deprecated
@@ -95,7 +95,7 @@ setup(
95
95
  'redis5',
96
96
  'redis',
97
97
  'setuptools_rust',
98
- 'fabric2==2.6.0', # 有的机器包rust错误, 这样做 curl https://sh.rustup.rs -sSf | sh
98
+ 'fabric2>=2.6.0', # 有的机器包rust错误, 这样做 curl https://sh.rustup.rs -sSf | sh
99
99
  'nb_filelock',
100
100
  'pysnooper',
101
101
  'deprecated',
File without changes
File without changes
File without changes
File without changes
File without changes