Tôi đang cố gắng sử dụng hỗ trợ socket mới cho Google App Engine để thực hiện một số truy vấn DNS. Tôi đang sử dụng dnspython để thực hiện truy vấn và mã hoạt động tốt bên ngoài GAE.Truy vấn DNS bằng cách sử dụng ổ cắm Google App Engine
Mã này là như sau:
class DnsQuery(webapp2.RequestHandler):
def get(self):
domain = self.request.get('domain')
logging.info("Test Query for "+domain)
answers = dns.resolver.query(domain, 'TXT', tcp=True)
logging.info("DNS OK")
for rdata in answers:
rc = str(rdata.exchange).lower()
logging.info("Record "+rc)
Khi tôi chạy trong GAE tôi nhận được lỗi sau:
File "/base/data/home/apps/s~/one.366576281491296772/main.py", line 37, in post
return self.get()
File "/base/data/home/apps/s~/one.366576281491296772/main.py", line 41, in get
answers = dns.resolver.query(domain, 'TXT', tcp=True)
File "/base/data/home/apps/s~/one.366576281491296772/dns/resolver.py", line 976, in query
raise_on_no_answer, source_port)
File "/base/data/home/apps/s~/one.366576281491296772/dns/resolver.py", line 821, in query
timeout = self._compute_timeout(start)
File "/base/data/home/apps/s~/one.366576281491296772/dns/resolver.py", line 735, in _compute_timeout
raise Timeout
nào được nêu ra bởi dnspython khi không có câu trả lời sẽ được trả trong thời hạn. Tôi đã tăng thời gian lên đến 60 giây, và DnsQuery là một nhiệm vụ, nhưng vẫn nhận được cùng một lỗi.
Có giới hạn nào trong việc triển khai ổ cắm Google App Engine, điều này ngăn cản việc thực hiện yêu cầu DNS không?
Tôi cũng gặp sự cố tương tự với Google App Engine. – Uri
@Cyril N: kiểm tra rằng ngoài việc có ứng dụng trả tiền, bạn cũng đặt ngân sách hàng ngày - ít nhất là năm ngoái có báo cáo về một số tính năng chỉ trả tiền không hoạt động đúng cho đến khi ngân sách hàng ngày được khởi tạo. –
@DanCornilescu Tôi đã đến Thanh toán> Ngân sách & Cảnh báo và tôi đã xác định cảnh báo về một số ngưỡng nhất định. Đó có phải ý của bạn? Tôi đọc tại http://stackoverflow.com/a/10894376/330867 rằng 'Google sẽ đợi cho đến khi khoản thanh toán đầu tiên bị xóa trước khi tăng hạn ngạch thư của bạn.'. Có lẽ đó là vấn đề của tôi. Nhưng sau đó tôi đã đi đến App Engine> Quota của tôi, và tôi có thể thấy rằng dưới mục Sockets, ứng dụng của tôi đã thực hiện một số yêu cầu (có thể sử dụng gói Python 'requests', mà tôi sử dụng). Vì vậy, 'Sockets' sẽ làm việc, nhưng không phải với' dnspython'? –