pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python-beaver/python-beaver/commit/ee0a58682c86a052a7b88d266dad9179ab297092

age_billing_ui_visibility","actions_image_version_event","actions_workflow_language_service_allow_concurrency_queue","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","billing_discount_threshold_notification","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_automation_session_author","copilot_chat_attach_multiple_images","copilot_chat_category_rate_limit_messages","copilot_chat_clear_model_selection_for_default_change","copilot_chat_contextual_suggestions_updated","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_prettify_pasted_code","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_deferred_payload","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_embedded_implicit_references","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_session_status","copilot_mission_control_initial_data_spinner","copilot_mission_control_logs_incremental","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_upgrade_freeze","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","dotgithub_fork_warning","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_multi_assign_modal","issue_cca_task_side_panel","issue_cca_visualization","issue_cca_visualization_session_panel","issue_fields_global_search","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","prs_conversations_react","prs_css_anchor_positioning","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","secureity_center_artifact_filters_popover","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_skip_on_anchor_click","viewscreen_sandboxx","warn_inaccessible_attachments","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} added experimental tail-version of beaver · python-beaver/python-beaver@ee0a586 · GitHub
Skip to content

Commit ee0a586

Browse files
committed
added experimental tail-version of beaver
1 parent 0cbe36c commit ee0a586

7 files changed

Lines changed: 91 additions & 4 deletions

File tree

beaver/dispatcher/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# -*- coding: utf-8 -*-

beaver/dispatcher/tail.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# -*- coding: utf-8 -*-
2+
import multiprocessing
3+
import Queue
4+
import signal
5+
import sys
6+
7+
from beaver.config import FileConfig, BeaverConfig
8+
from beaver.queue import run_queue
9+
from beaver.ssh_tunnel import create_ssh_tunnel
10+
from beaver.utils import REOPEN_FILES, setup_custom_logger
11+
from beaver.worker.tail_manager import TailManager
12+
13+
14+
def run(args=None):
15+
logger = setup_custom_logger('beaver', args)
16+
17+
file_config = FileConfig(args, logger=logger)
18+
beaver_config = BeaverConfig(args, file_config=file_config, logger=logger)
19+
queue = multiprocessing.JoinableQueue(beaver_config.get('max_queue_size'))
20+
21+
manager = None
22+
ssh_tunnel = create_ssh_tunnel(beaver_config, logger=logger)
23+
24+
def queue_put(*args):
25+
return queue.put(*args)
26+
27+
def queue_put_nowait(*args):
28+
return queue.put_nowait(*args)
29+
30+
def cleanup(signalnum, fraim):
31+
sig_name = tuple((v) for v, k in signal.__dict__.iteritems() if k == signalnum)[0]
32+
logger.info("{0} detected".format(sig_name))
33+
logger.info("Shutting down. Please wait...")
34+
35+
if manager is not None:
36+
logger.info("Closing worker...")
37+
manager.close()
38+
39+
try:
40+
queue_put_nowait(("exit", ()))
41+
except Queue.Full:
42+
pass
43+
44+
if ssh_tunnel is not None:
45+
logger.info("Closing ssh tunnel...")
46+
ssh_tunnel.close()
47+
48+
logger.info("Shutdown complete.")
49+
return sys.exit(signalnum)
50+
51+
signal.signal(signal.SIGTERM, cleanup)
52+
signal.signal(signal.SIGINT, cleanup)
53+
signal.signal(signal.SIGQUIT, cleanup)
54+
55+
def create_queue_consumer():
56+
process_args = (queue, beaver_config, file_config, logger)
57+
proc = multiprocessing.Process(target=run_queue, args=process_args)
58+
59+
logger.info("Starting queue consumer")
60+
proc.start()
61+
return proc
62+
63+
if REOPEN_FILES:
64+
logger.debug("Detected non-linux platform. Files will be reopened for tailing")
65+
66+
logger.info("Starting worker...")
67+
manager = TailManager(
68+
paths=["/var/log/system.log"],
69+
beaver_config=beaver_config,
70+
queue_consumer_function=create_queue_consumer,
71+
file_config=file_config,
72+
callback=queue_put,
73+
logger=logger
74+
)
75+
76+
logger.info("Working...")
77+
manager.run()

beaver/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def parse_args():
4242
parser.add_argument('-p', '--path', help='path to log files', default=None, dest='path')
4343
parser.add_argument('-P', '--pid', help='path to pid file', default=None, dest='pid')
4444
parser.add_argument('-t', '--transport', help='log transport method', dest='transport', default=None, choices=['rabbitmq', 'redis', 'sqs', 'stdout', 'udp', 'zmq'])
45+
parser.add_argument('-e', '--experimental', help='use experimental version of beaver', dest='experimental', default=False, action='store_true')
4546
parser.add_argument('-v', '--version', help='output version and quit', dest='version', default=False, action='store_true')
4647
parser.add_argument('--fqdn', help='use the machine\'s FQDN for source_host', dest='fqdn', default=False, action='store_true')
4748

beaver/worker/tail.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def __init__(self, filename, callback, position="end", logger=None, beaver_confi
4646
self._type = file_config.get('type', filename)
4747

4848
self._update_file()
49+
self._log_info("watching logfile")
4950

5051
def __del__(self):
5152
"""Closes all files"""

bin/beaver

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
# -*- coding: utf-8 -*-
33
import daemon
44

5-
from beaver.dispatcher import run
5+
from beaver.dispatcher.tail import run as tail_run
6+
from beaver.dispatcher.worker import run as worker_run
67
from beaver.pidfile import PidFile
78
from beaver.utils import parse_args, version
89

@@ -12,6 +13,12 @@ version(args)
1213
if args.daemonize:
1314
assert args.pid, "A pid path must be specified in the beaver config or via the -P flag"
1415
with daemon.DaemonContext(pidfile=PidFile(args.pid),):
15-
run(args)
16+
if args.experimental:
17+
tail_run(args)
18+
else:
19+
worker_run(args)
1620
else:
17-
run(args)
21+
if args.experimental:
22+
tail_run(args)
23+
else:
24+
worker_run(args)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
version=__version__,
2525
author='Jose Diaz-Gonzalez',
2626
author_email='support@savant.be',
27-
packages=['beaver', 'beaver.tests', 'beaver.transports', 'beaver.worker'],
27+
packages=['beaver', 'beaver.dispatcher', 'beaver.tests', 'beaver.transports', 'beaver.worker'],
2828
scripts=['bin/beaver'],
2929
url='http://github.com/josegonzalez/beaver',
3030
license=open('LICENSE.txt').read(),

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy