kopia lustrzana https://github.com/bugout-dev/moonstream
				
				
				
			Merge pull request #94 from zomglings/crawlers-ethereum-trending
Systemd service and timer definition for "ethcrawler trending" crawlpull/96/head
						commit
						13c7e6699b
					
				|  | @ -0,0 +1,11 @@ | |||
| [Unit] | ||||
| Description=Load trending Ethereum addresses to the database | ||||
| After=network.target | ||||
| 
 | ||||
| [Service] | ||||
| Type=oneshot | ||||
| User=ubuntu | ||||
| Group=www-data | ||||
| WorkingDirectory=/home/ubuntu/moonstream/crawlers | ||||
| EnvironmentFile=/home/ubuntu/mooncrawl-secrets/app.env | ||||
| ExecStart=/usr/bin/bash -c '/home/ubuntu/mooncrawl-env/bin/python -m mooncrawl.ethcrawler trending' | ||||
|  | @ -0,0 +1,9 @@ | |||
| [Unit] | ||||
| Description=Load trending Ethereum addresses to the database every 5 minutes | ||||
| 
 | ||||
| [Timer] | ||||
| OnBootSec=10s | ||||
| OnUnitActiveSec=5m | ||||
| 
 | ||||
| [Install] | ||||
| WantedBy=timers.target | ||||
|  | @ -2,8 +2,10 @@ | |||
| Moonstream crawlers CLI. | ||||
| """ | ||||
| import argparse | ||||
| from datetime import datetime, timedelta, timezone | ||||
| from enum import Enum | ||||
| import json | ||||
| import os | ||||
| import sys | ||||
| import time | ||||
| from typing import Iterator, List | ||||
|  | @ -21,6 +23,7 @@ from .ethereum import ( | |||
| ) | ||||
| from .publish import publish_json | ||||
| from .settings import MOONSTREAM_CRAWL_WORKERS | ||||
| from .version import MOONCRAWL_VERSION | ||||
| 
 | ||||
| 
 | ||||
| class ProcessingOrder(Enum): | ||||
|  | @ -177,11 +180,20 @@ def ethcrawler_trending_handler(args: argparse.Namespace) -> None: | |||
|         include_end=args.include_end, | ||||
|     ) | ||||
|     results = trending(date_range) | ||||
|     if args.humbug: | ||||
|     humbug_token = args.humbug | ||||
|     if humbug_token is None: | ||||
|         humbug_token = os.environ.get("MOONSTREAM_HUMBUG_TOKEN") | ||||
|     if humbug_token: | ||||
|         opening_bracket = "[" if args.include_start else "(" | ||||
|         closing_bracket = "]" if args.include_end else ")" | ||||
|         title = f"Ethereum trending addresses: {opening_bracket}{args.start}, {args.end}{closing_bracket}" | ||||
|         publish_json("ethereum_trending", args.humbug, title, results) | ||||
|         publish_json( | ||||
|             "ethereum_trending", | ||||
|             humbug_token, | ||||
|             title, | ||||
|             results, | ||||
|             tags=[f"crawler_version:{MOONCRAWL_VERSION}"], | ||||
|         ) | ||||
|     with args.outfile as ofp: | ||||
|         json.dump(results, ofp) | ||||
| 
 | ||||
|  | @ -191,6 +203,8 @@ def main() -> None: | |||
|     parser.set_defaults(func=lambda _: parser.print_help()) | ||||
|     subcommands = parser.add_subparsers(description="Crawlers commands") | ||||
| 
 | ||||
|     time_now = datetime.now(timezone.utc) | ||||
| 
 | ||||
|     # Ethereum blocks parser | ||||
|     parser_ethcrawler_blocks = subcommands.add_parser( | ||||
|         "blocks", description="Ethereum blocks commands" | ||||
|  | @ -335,8 +349,8 @@ def main() -> None: | |||
|         "-s", | ||||
|         "--start", | ||||
|         type=dateutil.parser.parse, | ||||
|         required=True, | ||||
|         help="Start time for window to calculate trending addresses in", | ||||
|         default=(time_now - timedelta(hours=1, minutes=0)).isoformat(), | ||||
|         help=f"Start time for window to calculate trending addresses in (default: {(time_now - timedelta(hours=1,minutes=0)).isoformat()})", | ||||
|     ) | ||||
|     parser_ethcrawler_trending.add_argument( | ||||
|         "--include-start", | ||||
|  | @ -347,8 +361,8 @@ def main() -> None: | |||
|         "-e", | ||||
|         "--end", | ||||
|         type=dateutil.parser.parse, | ||||
|         required=True, | ||||
|         help="End time for window to calculate trending addresses in", | ||||
|         default=time_now.isoformat(), | ||||
|         help=f"End time for window to calculate trending addresses in (default: {time_now.isoformat()})", | ||||
|     ) | ||||
|     parser_ethcrawler_trending.add_argument( | ||||
|         "--include-end", | ||||
|  | @ -358,7 +372,11 @@ def main() -> None: | |||
|     parser_ethcrawler_trending.add_argument( | ||||
|         "--humbug", | ||||
|         default=None, | ||||
|         help="If you would like to write this data to a Moonstream journal, please provide a Humbug token for that here.", | ||||
|         help=( | ||||
|             "If you would like to write this data to a Moonstream journal, please provide a Humbug " | ||||
|             "token for that here. (This argument overrides any value set in the " | ||||
|             "MOONSTREAM_HUMBUG_TOKEN environment variable)" | ||||
|         ), | ||||
|     ) | ||||
|     parser_ethcrawler_trending.add_argument( | ||||
|         "-o", | ||||
|  |  | |||
|  | @ -317,7 +317,14 @@ def trending( | |||
| 
 | ||||
|         return query | ||||
| 
 | ||||
|     results: Dict[str, Any] = {} | ||||
|     results: Dict[str, Any] = { | ||||
|         "date_range": { | ||||
|             "start_time": date_range.start_time.isoformat(), | ||||
|             "end_time": date_range.end_time.isoformat(), | ||||
|             "include_start": date_range.include_start, | ||||
|             "include_end": date_range.include_end, | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     try: | ||||
|         transactions_out_query = make_query( | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Neeraj Kashyap
						Neeraj Kashyap