2017-05-16 2 views

答えて

1

ありがとうパイソン

を使用して、日付/時間を見つけるために何を意味します次のスニペット:

REGION = 'us-west-2' # or whichever 


def main(queue_name): 
    """Continuously poll the queue for messages (jobs).""" 
    sqs = boto3.resource('sqs', region_name=REGION) 
    queue = sqs.get_queue_by_name(QueueName=queue_name) 
    while True: 
     poll(queue=queue) 

def poll(queue): 
    messages = queue.receive_messages() # Note: MaxNumberOfMessages default is 1.  
    for m in messages: 
     process_message(m) 

def process_message(message): 
    print(message.body) 
    # ... 
    if success: # processed ok 
     message.delete() # remove from queue 
    else: # an error of some kind 
     message.change_visibility(VisibilityTimeout=1) # dead letter or try again 
+0

@JoKoメッセージは間違いなく飛行しているはずです。 :/ –

+0

@JoKo各ステップで印刷するのが良い方法です。あなたはPythonを使っているので、プログラムではなく、コマンドラインでこれを行うことができます。それで私はデバッグしようとしています。つまり、コマンドラインで 'python'を実行し、プロンプトでプログラムに従ってみて、メッセージを取得してそれを突き止めてください。 –

+0

@JoKoおそらく別のマシンまたはプロセスがポーリングをしていますか? ps -ef | grep python' –

0

あなたのコードはうまく動作します。

{ 
    "Messages": [ 
     { 
      "Body": "Hello Jo Ko!", 
      "ReceiptHandle": "redacted", 
      "MD5OfBody": "redacted", 
      "MessageId": "redacted" 
     } 
    ], 
    "ResponseMetadata": { 
     "RetryAttempts": 0, 
     "HTTPStatusCode": 200, 
     "RequestId": "redacted", 
     "HTTPHeaders": { 
      "x-amzn-requestid": "redacted", 
      "content-length": "800", 
      "server": "Server", 
      "connection": "keep-alive", 
      "date": "Wed, 17 May 2017 16:00:00 GMT", 
      "content-type": "text/xml" 
     } 
    } 
} 

PS receive_message方法は」doesnのbotocoreのSQS:ここに出力(印刷json.dumps(メッセージ、インデント= 4))私は、コードを実行し、私のSQSキューにメッセージを送信する場合、私は見ていますメッセージを返します。メッセージの配列を含むdictを返します。

+0

メッセージが表示されていない場合は、a)メッセージがない、またはb)メッセージがありますが、「飛行中」です(つまり、別のクライアント、たとえばAWSコンソールやアプリケーションの別のインスタンスがメッセージを受信して​​処理していますが、まだ削除していません(可視性のタイムアウトはまだ期限切れです)。 – jarmod

関連する問題