leadguru-jobs 0.701.0__tar.gz → 0.703.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.701.0 → leadguru_jobs-0.703.0}/PKG-INFO +1 -1
  2. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/leadguru_jobs.egg-info/PKG-INFO +1 -1
  3. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/env.py +3 -1
  4. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/chat_history.py +2 -6
  5. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/discord_client/discord_client.py +6 -4
  6. leadguru_jobs-0.703.0/lgt_jobs/main.py +53 -0
  7. leadguru_jobs-0.701.0/lgt_jobs/main.py +0 -47
  8. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/MANIFEST.in +0 -0
  9. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/README.md +0 -0
  10. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/leadguru_jobs.egg-info/SOURCES.txt +0 -0
  11. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/leadguru_jobs.egg-info/dependency_links.txt +0 -0
  12. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/leadguru_jobs.egg-info/not-zip-safe +0 -0
  13. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/leadguru_jobs.egg-info/requires.txt +0 -0
  14. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/leadguru_jobs.egg-info/top_level.txt +0 -0
  15. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/__init__.py +0 -0
  16. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/assets/images/arrow.png +0 -0
  17. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/assets/images/arrow_blue.png +0 -0
  18. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/assets/images/firework.png +0 -0
  19. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/assets/images/lock.png +0 -0
  20. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/assets/images/logo.png +0 -0
  21. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/assets/images/mail.png +0 -0
  22. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/basejobs.py +0 -0
  23. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/__init__.py +0 -0
  24. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/analytics.py +0 -0
  25. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/bot_stats_update.py +0 -0
  26. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/bots_killer.py +0 -0
  27. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/connect_sources.py +0 -0
  28. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/inbox_leads.py +0 -0
  29. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/load_slack_people.py +0 -0
  30. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/load_slack_users.py +0 -0
  31. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/mass_message.py +0 -0
  32. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/send_code.py +0 -0
  33. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/send_slack_message.py +0 -0
  34. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/update_slack_profile.py +0 -0
  35. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/jobs/workspace_connect.py +0 -0
  36. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/__init__.py +0 -0
  37. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/discord_client/__init__.py +0 -0
  38. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/discord_client/methods.py +0 -0
  39. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/enums/__init__.py +0 -0
  40. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/enums/slack_errors.py +0 -0
  41. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/helpers.py +0 -0
  42. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/pubsub/__init__.py +0 -0
  43. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/pubsub/messages.py +0 -0
  44. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/pubsub/pubsubfactory.py +0 -0
  45. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/slack_client/__init__.py +0 -0
  46. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/slack_client/methods.py +0 -0
  47. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/slack_client/slack_client.py +0 -0
  48. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_common/slack_client/web_client.py +0 -0
  49. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/__init__.py +0 -0
  50. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/analytics.py +0 -0
  51. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/engine.py +0 -0
  52. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/enums.py +0 -0
  53. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/helpers.py +0 -0
  54. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/model.py +0 -0
  55. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/__init__.py +0 -0
  56. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/base.py +0 -0
  57. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/boards/__init__.py +0 -0
  58. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/boards/board.py +0 -0
  59. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/boards/status.py +0 -0
  60. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/bots/__init__.py +0 -0
  61. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/bots/base_bot.py +0 -0
  62. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/bots/bot_info.py +0 -0
  63. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/bots/dedicated_bot.py +0 -0
  64. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/chat/__init__.py +0 -0
  65. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/chat/file.py +0 -0
  66. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/chat/grouped_messages.py +0 -0
  67. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/chat/message.py +0 -0
  68. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/chat/request.py +0 -0
  69. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/chat/scheduled_message.py +0 -0
  70. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/contacts/__init__.py +0 -0
  71. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/contacts/contact.py +0 -0
  72. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/__init__.py +0 -0
  73. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/cloud/__init__.py +0 -0
  74. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/cloud/file.py +0 -0
  75. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/discord/__init__.py +0 -0
  76. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/discord/user.py +0 -0
  77. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/slack/__init__.py +0 -0
  78. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/slack/timezone.py +0 -0
  79. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/slack/user.py +0 -0
  80. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/external/user_workspace.py +0 -0
  81. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/leads/__init__.py +0 -0
  82. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/leads/config.py +0 -0
  83. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/leads/extended_lead.py +0 -0
  84. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/leads/lead.py +0 -0
  85. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/leads/message.py +0 -0
  86. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/notifications/__init__.py +0 -0
  87. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/notifications/notification.py +0 -0
  88. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/notifications/notification_settings.py +0 -0
  89. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/people/__init__.py +0 -0
  90. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/people/people.py +0 -0
  91. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/people/profile.py +0 -0
  92. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/post/__init__.py +0 -0
  93. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/post/message.py +0 -0
  94. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/post/post.py +0 -0
  95. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/templates/__init__.py +0 -0
  96. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/templates/template.py +0 -0
  97. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/__init__.py +0 -0
  98. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/feature.py +0 -0
  99. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/general_settings.py +0 -0
  100. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/reset_password.py +0 -0
  101. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/subscription.py +0 -0
  102. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/typed_field.py +0 -0
  103. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/user.py +0 -0
  104. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/user_follow_ups.py +0 -0
  105. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/user_page.py +0 -0
  106. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user/verification.py +0 -0
  107. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user_leads/__init__.py +0 -0
  108. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user_leads/extended_user_lead.py +0 -0
  109. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/models/user_leads/user_lead.py +0 -0
  110. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/mongo_repository.py +0 -0
  111. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/repositories/__init__.py +0 -0
  112. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/repositories/post/__init__.py +0 -0
  113. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/lgt_data/repositories/post/posts.py +0 -0
  114. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/runner.py +0 -0
  115. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/services/__init__.py +0 -0
  116. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/services/k8_manager.py +0 -0
  117. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/services/web_client.py +0 -0
  118. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/simple_job.py +0 -0
  119. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/smtp.py +0 -0
  120. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/lgt_jobs/templates/new_message.html +0 -0
  121. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/setup.cfg +0 -0
  122. {leadguru_jobs-0.701.0 → leadguru_jobs-0.703.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leadguru_jobs
3
- Version: 0.701.0
3
+ Version: 0.703.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.701.0
3
+ Version: 0.703.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
@@ -14,7 +14,8 @@ class DiscordClient:
14
14
  self.token = token
15
15
  self.headers = {"Authorization": self.token}
16
16
 
17
- def login(self, login: str, password: str, captcha_key: str = None, rqtoken: str = None) -> dict:
17
+ def login(self, login: str, password: str, captcha_key: str = None, rqtoken: str = None,
18
+ user_agent: str = None) -> dict:
18
19
  payload = {
19
20
  'login': login,
20
21
  'password': password,
@@ -23,9 +24,10 @@ class DiscordClient:
23
24
  "gift_code_sku_id": None
24
25
  }
25
26
  cookies = {
26
- 'X-Captcha-Key': captcha_key,
27
- 'X-Captcha-Rqtoken': rqtoken
28
- } if captcha_key else {}
27
+ 'User-Agent': user_agent
28
+ }
29
+ if captcha_key:
30
+ cookies = cookies | {'X-Captcha-Key': captcha_key,'X-Captcha-Rqtoken': rqtoken}
29
31
  response = requests.post(f"{self.base_url}{self.discord_api_version}{DiscordMethods.LOGIN.value}", json=payload, cookies=cookies)
30
32
  if response.status_code == 400 or response.status_code == 200:
31
33
  return response.json()
@@ -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)