バックグラウンド処理の長時間実行タスクに TaskQueues を使用した、Google App Engine でのサーバー送信プッシュ通知
これは、Google App Engineタスク/バックグラウンド タスクキューを使用して、TaskQueue 処理ステップのステップを完了したとき、および TaskQueue が完全に完了したときにユーザーに通知するために、 Google App Engine Python ソリューションで必要なソース コードです。ちょっと待って!TaskQueue リクエストを開始した特定のユーザーにのみ通知を送信します。
ステップ 1 - クライアントXYZのみにメッセージを発行するにはどうすればよいですか?
これは簡単で、ソースコードは次のとおりです。
また、アプリを保護するために、https: //admin.pubnub.comダッシュボードから適切なキーを取得してください。
JavaScript
<script src=https://pubnub.a.ssl.fastly.net/pubnub-3.4.3.min.js></script>
<script>(function(){
var pubnub = PUBNUB.init({ subscribe_key : 'demo', ssl : true });
pubnub.subscribe({
channel : '0IHM4b2VpamZhaWU0eThyaWpvaWdma3Mg', // SESSION ID
message : function(message) { alert(message) } // ALERT MESSAGE
});
})();</script>
メッセージを表示するために単純な JavaScript の Alert() 関数を使用していることに注意してください。ただし、代わりに、それをページのより堅牢な<div>{message-here}</div>
通知領域に変更する必要があります。
タスクキューのセットアップ
taskqueue.add(
url='/my-long-task',
countdown=1,
method='GET',
params={ 'sessionid' : '0IHM4b2VpamZhaWU0eThyaWpvaWdma3Mg' }
)
基本的に、ユーザーセッション IDを使用して、通信をユーザーXYZにルーティングします。Google App Engine Python では、セッション IDを使用して、必要なメッセージ状態をクライアントに公開します。
Google App Engine - Python タスク
import webapp2
from Pubnub import Pubnub ## Download - https://raw.github.com/pubnub/pubnub-api/master/google-app-engine/python/Pubnub.py
pubnub = Pubnub( "demo", "demo" )
def server_to_client_notify( sessionId, message ):
pubnub.publish({
"channel" : sessionId, ## SESSION ID
"message" : "hi!"
})
class LongRunningTaskQueue(webapp2.RequestHandler):
def get(self):
## GET Session ID
sessionId = urllib.unquote(self.request.get( 'sessionid', '' ))
server_to_client_notify( sessionId, "Starting Your Job" )
## - DO A LOT OF WORK - ##
## - DO A LOT OF WORK - ##
## - DO A LOT OF WORK - ##
server_to_client_notify( sessionId, "Your Job is Nearly Complete" )
## - DO A LOT OF WORK - ##
## - DO A LOT OF WORK - ##
## - DO A LOT OF WORK - ##
server_to_client_notify( sessionId, "Your Job has Finished!" )
app = webapp2.WSGIApplication([('/my-long-task', LongRunningTaskQueue)])
基本的な概念は、タスクをキューに開始/追加する TaskQueue URL コマンドとともにSESSION IDをポストすることです。その後、TaskQueue が開始されたら、URL パラメータを取得できます。
複数のステップがあるかどうか疑問に思っている場合、答えは「ステップは 1 つだけです」です。