-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #29 from KnowledgeSeed/webpush
support long running task
- Loading branch information
Showing
24 changed files
with
193 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
from analogic.signal_receiver import SignalReceiver | ||
from flask import current_app | ||
import os | ||
import sys | ||
import logging | ||
class DefaultSignalReceiver(SignalReceiver): | ||
|
||
def initialize(self): | ||
for name, analogic_app in current_app.analogic_applications.items(): | ||
|
||
if analogic_app.get_setting().get_config().get('authenticationMode') == 'MultiAuthenticationProvider': | ||
|
||
for n, sub_analogic_app in analogic_app.authentication_providers.items(): | ||
|
||
self._connect_signal_and_handler(sub_analogic_app) | ||
else: | ||
|
||
self._connect_signal_and_handler(analogic_app) | ||
|
||
def _connect_signal_and_handler(self, analogic_app): | ||
|
||
setting = analogic_app.get_setting() | ||
|
||
path = os.path.join(setting.site_root, 'server', 'configs', 'signal_subscriptions.json') | ||
|
||
if os.path.exists(path): | ||
|
||
sub = setting._get_json_setting(os.path.join('server', 'configs', 'signal_subscriptions')) | ||
|
||
for subscription in sub.get('subscriptions'): | ||
try: | ||
signal_params = subscription.get('signal') | ||
|
||
handler_params = subscription.get('handler') | ||
|
||
named_signal = getattr(sys.modules[signal_params.get('namespace')], signal_params.get('name')) | ||
|
||
if handler_params.get('class') is None: | ||
|
||
handler = getattr(sys.modules[handler_params.get('namespace')], handler_params.get('method')) | ||
|
||
else: | ||
|
||
handler = getattr(getattr(sys.modules[handler_params.get('namespace')], handler_params.get('class')), handler_params.get('method')) | ||
|
||
getattr(named_signal, 'connect')(handler, analogic_app) | ||
|
||
except Exception as e: | ||
logger = logging.getLogger(__name__) | ||
logger.error(f'Unable to connect signal {setting.get_instance()}') | ||
logger.error(e, exc_info=True) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
from abc import ABC, abstractmethod | ||
class LongRunningTaskExecutor(ABC): | ||
|
||
@abstractmethod | ||
def send_long_running_request(self, url, method, data, headers, cookies, encode_content) -> dict: | ||
pass | ||
|
||
@abstractmethod | ||
def on_long_running_request_canceled(self, **kwargs): | ||
pass | ||
|
||
@abstractmethod | ||
def on_long_running_request_completed(self, **kwargs): | ||
pass | ||
|
||
@abstractmethod | ||
def check_long_running_request(self, **kwargs) -> bool: | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
from abc import ABC, abstractmethod | ||
class SignalReceiver(ABC): | ||
@abstractmethod | ||
def initialize(self): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
from blinker import Namespace | ||
|
||
my_signals = Namespace() | ||
|
||
logged_in = my_signals.signal('logged_in') | ||
|
||
before_call_do_proxy = my_signals.signal('before_call_do_proxy') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.