leadguru-jobs 0.702.0__tar.gz → 0.704.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.
Files changed (122) hide show
  1. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/PKG-INFO +1 -1
  2. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
  3. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/env.py +3 -1
  4. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/chat_history.py +2 -6
  5. leadguru_jobs-0.704.0/lgt_jobs/main.py +53 -0
  6. leadguru_jobs-0.702.0/lgt_jobs/main.py +0 -47
  7. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/MANIFEST.in +0 -0
  8. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/README.md +0 -0
  9. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
  10. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
  11. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
  12. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/leadguru_jobs.egg-info/requires.txt +0 -0
  13. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
  14. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/__init__.py +0 -0
  15. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/assets/images/arrow.png +0 -0
  16. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/assets/images/arrow_blue.png +0 -0
  17. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/assets/images/firework.png +0 -0
  18. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/assets/images/lock.png +0 -0
  19. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/assets/images/logo.png +0 -0
  20. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/assets/images/mail.png +0 -0
  21. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/basejobs.py +0 -0
  22. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/__init__.py +0 -0
  23. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/analytics.py +0 -0
  24. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
  25. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/bots_killer.py +0 -0
  26. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/connect_sources.py +0 -0
  27. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
  28. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/load_slack_people.py +0 -0
  29. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/load_slack_users.py +0 -0
  30. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/mass_message.py +0 -0
  31. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/send_code.py +0 -0
  32. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
  33. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
  34. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
  35. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/__init__.py +0 -0
  36. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
  37. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +0 -0
  38. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
  39. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
  40. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
  41. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/helpers.py +0 -0
  42. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
  43. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
  44. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
  45. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
  46. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
  47. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
  48. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
  49. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/__init__.py +0 -0
  50. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/analytics.py +0 -0
  51. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/engine.py +0 -0
  52. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/enums.py +0 -0
  53. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/helpers.py +0 -0
  54. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/model.py +0 -0
  55. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/__init__.py +0 -0
  56. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/base.py +0 -0
  57. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/boards/__init__.py +0 -0
  58. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/boards/board.py +0 -0
  59. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/boards/status.py +0 -0
  60. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/bots/__init__.py +0 -0
  61. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/bots/base_bot.py +0 -0
  62. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/bots/bot_info.py +0 -0
  63. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/bots/dedicated_bot.py +0 -0
  64. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/chat/__init__.py +0 -0
  65. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/chat/file.py +0 -0
  66. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/chat/grouped_messages.py +0 -0
  67. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/chat/message.py +0 -0
  68. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/chat/request.py +0 -0
  69. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/chat/scheduled_message.py +0 -0
  70. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/contacts/__init__.py +0 -0
  71. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/contacts/contact.py +0 -0
  72. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/__init__.py +0 -0
  73. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/cloud/__init__.py +0 -0
  74. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/cloud/file.py +0 -0
  75. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/discord/__init__.py +0 -0
  76. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/discord/user.py +0 -0
  77. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/slack/__init__.py +0 -0
  78. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/slack/timezone.py +0 -0
  79. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/slack/user.py +0 -0
  80. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/external/user_workspace.py +0 -0
  81. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/leads/__init__.py +0 -0
  82. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/leads/config.py +0 -0
  83. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/leads/extended_lead.py +0 -0
  84. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/leads/lead.py +0 -0
  85. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/leads/message.py +0 -0
  86. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/notifications/__init__.py +0 -0
  87. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/notifications/notification.py +0 -0
  88. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/notifications/notification_settings.py +0 -0
  89. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/people/__init__.py +0 -0
  90. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/people/people.py +0 -0
  91. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/people/profile.py +0 -0
  92. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/post/__init__.py +0 -0
  93. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/post/message.py +0 -0
  94. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/post/post.py +0 -0
  95. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/templates/__init__.py +0 -0
  96. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/templates/template.py +0 -0
  97. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/__init__.py +0 -0
  98. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/feature.py +0 -0
  99. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/general_settings.py +0 -0
  100. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/reset_password.py +0 -0
  101. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/subscription.py +0 -0
  102. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/typed_field.py +0 -0
  103. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/user.py +0 -0
  104. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/user_follow_ups.py +0 -0
  105. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/user_page.py +0 -0
  106. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user/verification.py +0 -0
  107. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user_leads/__init__.py +0 -0
  108. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py +0 -0
  109. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/models/user_leads/user_lead.py +0 -0
  110. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/mongo_repository.py +0 -0
  111. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/repositories/__init__.py +0 -0
  112. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/repositories/post/__init__.py +0 -0
  113. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/lgt_data/repositories/post/posts.py +0 -0
  114. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/runner.py +0 -0
  115. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/services/__init__.py +0 -0
  116. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/services/k8_manager.py +0 -0
  117. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/services/web_client.py +0 -0
  118. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/simple_job.py +0 -0
  119. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/smtp.py +0 -0
  120. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/lgt_jobs/templates/new_message.html +0 -0
  121. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/setup.cfg +0 -0
  122. {leadguru_jobs-0.702.0 → leadguru_jobs-0.704.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.702.0
3
+ Version: 0.704.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.702.0
3
+ Version: 0.704.0
4
4
  Summary: LGT jobs builds
5
5
  Author-email: developer@leadguru.co
6
6
  Classifier: Development Status :: 5 - Production/Stable
@@ -2,7 +2,7 @@ import os
2
2
 
3
3
  project_id = os.environ.get('PROJECT_ID')
4
4
  background_jobs_topic = os.environ.get('BACKGROUND_JOBS_TOPIC')
5
- background_jobs_subscriber = os.environ.get('BACKGROUND_JOBS_SUBSCRIBER')
5
+ background_jobs_subscriber = os.environ.get('BACKGROUND_JOBS_SUBSCRIBER', 'subscriber')
6
6
  mongo_connection_string = os.environ.get('MONGO_CONNECTION_STRING')
7
7
  smtp_host = os.environ.get('SMTP_HOST')
8
8
  smtp_login = os.environ.get('SMTP_LOGIN')
@@ -14,3 +14,5 @@ service_account_password = os.environ.get('SERVICE_ACCOUNT_PASSWORD')
14
14
  v2_server_host = os.environ.get('V2_SERVER_HOST')
15
15
  v3_server_host = os.environ.get('V3_SERVER_HOST')
16
16
  v1_server_host = os.environ.get('V1_SERVER_HOST')
17
+ max_messages = int(os.environ.get('MAX_MESSAGES', 10))
18
+ pool_size = int(os.environ.get('POOL_SIZE', 10))
@@ -33,9 +33,6 @@ class LoadChatHistoryJob(BaseBackgroundJob, ABC):
33
33
 
34
34
  def exec(self, data: LoadChatHistoryJobData):
35
35
  user = UserMongoRepository().get(data.user_id)
36
- if user.subscription_expired_at.replace(tzinfo=UTC) < datetime.now(UTC):
37
- log.info(f"[LoadChatHistoryJob]: {user.email} has expired subscription")
38
- return
39
36
  bots = DedicatedBotRepository().get_all(only_valid=True, user_id=user.id, source_type=SourceType.SLACK)
40
37
  if not bots:
41
38
  return
@@ -47,7 +44,6 @@ class LoadChatHistoryJob(BaseBackgroundJob, ABC):
47
44
  if not contacts:
48
45
  continue
49
46
 
50
- log.info(f"[LoadChatHistoryJob]: processing {len(contacts)} contacts for user: {user.email}")
51
47
  for contact in contacts:
52
48
  message = self._update_history(contact=contact, bot=bot)
53
49
 
@@ -93,7 +89,7 @@ class LoadChatHistoryJob(BaseBackgroundJob, ABC):
93
89
 
94
90
  messages = history.get('messages', [])
95
91
  if not messages:
96
- return None
92
+ return
97
93
 
98
94
  messages = [ChatMessage.from_slack_response(bot, m, contact.sender_id) for m in messages]
99
95
  new_messages = self._get_new_messages(contact, bot, messages)
@@ -106,4 +102,4 @@ class LoadChatHistoryJob(BaseBackgroundJob, ABC):
106
102
  self.user_leads_repo.update_many_by_sender_id(contact.sender_id, last_action_at=now)
107
103
  return new_messages[-1]
108
104
 
109
- return None
105
+ return
@@ -0,0 +1,53 @@
1
+ import json
2
+ import traceback
3
+
4
+ from concurrent.futures import ThreadPoolExecutor
5
+
6
+ from lgt_common.pubsub.pubsubfactory import PubSubFactory
7
+ import logging as log
8
+ from lgt_jobs.env import project_id, background_jobs_topic, background_jobs_subscriber
9
+ from lgt_jobs.runner import BackgroundJobRunner
10
+ from lgt_jobs import jobs_map, env
11
+ import google.cloud.logging
12
+ from google.cloud.pubsub_v1 import SubscriberClient
13
+ from google.cloud.pubsub_v1.types import FlowControl
14
+ from google.cloud.pubsub_v1.subscriber.scheduler import ThreadScheduler
15
+
16
+
17
+ def callback(message):
18
+ try:
19
+ data = json.loads(message.data)
20
+ log.info(f"[JOB]: {data} [START]")
21
+ BackgroundJobRunner.run(jobs_map=jobs_map, data=data)
22
+ log.info(f"[JOB]: {data} [FINISHED]")
23
+ except Exception as exception:
24
+ log.error(f"[ERROR][JOB]: {message.data} [ERROR] {traceback.format_exception(exception)} ")
25
+ traceback.print_exception(exception)
26
+ finally:
27
+ # accept message any way
28
+ message.ack()
29
+
30
+
31
+ if __name__ == '__main__':
32
+ client = google.cloud.logging.Client()
33
+ client.setup_logging()
34
+ factory = PubSubFactory(project_id)
35
+ factory.create_topic_if_doesnt_exist(background_jobs_topic)
36
+ factory.create_subscription_if_doesnt_exist(background_jobs_subscriber, background_jobs_topic, 600)
37
+ subscription_path = factory.get_subscription_path(background_jobs_subscriber, background_jobs_topic)
38
+ # Launching a subscription
39
+ future = SubscriberClient().subscribe(
40
+ subscription_path,
41
+ callback=callback,
42
+ flow_control=FlowControl(max_messages=env.max_messages),
43
+ scheduler=ThreadScheduler(executor=ThreadPoolExecutor(max_workers=env.pool_size))
44
+ )
45
+
46
+ log.info(f"Subscription to {subscription_path} started. We are waiting for a message..\n")
47
+
48
+ try:
49
+ future.result() # Block the current thread until an exception occurs
50
+ except Exception as exception:
51
+ log.error(f"[ERROR][SUBSCRIBER]: {traceback.format_exception(exception)}")
52
+ traceback.print_exception(exception)
53
+ future.cancel()
@@ -1,47 +0,0 @@
1
- import json
2
- import sys
3
- import threading
4
- import time
5
- from lgt_common.pubsub.pubsubfactory import PubSubFactory
6
- import logging as log
7
- from lgt_jobs.env import project_id, background_jobs_topic, background_jobs_subscriber
8
- from lgt_jobs.runner import BackgroundJobRunner
9
- from lgt_jobs import jobs_map
10
- import google.cloud.logging
11
-
12
- lock = threading.Lock()
13
-
14
-
15
- def run_background_job(data):
16
- try:
17
- log.info(f"[JOB]: {data} [START]")
18
- BackgroundJobRunner.run(jobs_map=jobs_map, data=data)
19
- log.info(f"[JOB]: {data} [FINISHED]")
20
- except Exception:
21
- raise
22
-
23
-
24
- def run_background_job_with_lock(message):
25
- try:
26
- data = json.loads(message.data)
27
- with lock:
28
- run_background_job(data)
29
- except:
30
- import traceback
31
- log.error(f"[ERROR][JOB]: {message.data} [ERROR] {traceback.format_exception(*sys.exc_info())} ")
32
- traceback.print_exception(*sys.exc_info())
33
- finally:
34
- # accept message any way
35
- message.ack()
36
-
37
-
38
- if __name__ == '__main__':
39
- client = google.cloud.logging.Client()
40
- client.setup_logging()
41
- factory = PubSubFactory(project_id)
42
- factory.create_topic_if_doesnt_exist(background_jobs_topic)
43
- factory.create_subscription_if_doesnt_exist(background_jobs_subscriber, background_jobs_topic, 600)
44
- bot_subscription_path = factory.get_subscription_path(background_jobs_subscriber, background_jobs_topic)
45
- factory.subscriber.subscribe(bot_subscription_path, callback=run_background_job_with_lock)
46
- while True:
47
- time.sleep(1)