최근에 프로덕션 환경에서 내 웹사이트를 크롤링하는 error: [Errno 111] Connection refused
중에 오류가 발생하기 시작했습니다 . http://yandex.com/bots
나는 그들이 사이트를 크롤링하고 있다는 사실에 개의치 않지만 이러한 이메일을 받지 않기를 원합니다.
내 직감으로는 http
내 80
웹사이트에서 https
. 이 경우에는 거부당하는 것이 좋습니다. 그런데 왜 이러한 오류가 발생하는지 잘 모르겠습니다(지난주부터 하루에 4~5회).
이러한 오류를 중지하는 방법에 대한 의견이 있으십니까? 저는 Python 2.7, Heroku, Cloudflare를 사용하고 있습니다.
Internal Server Error: /team/46/
Traceback (most recent call last):
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/newrelic/hooks/framework_django.py", line 544, in wrapper
return wrapped(*args, **kwargs)
File "/app/wehealth/wehealth/utils.py", line 121, in __render_with
d = f(request, *args, **kwargs)
File "/app/wehealth/users/views.py", line 737, in team
team = get_group(team, team_id, team_key)
File "/app/wehealth/wehealth/utils.py", line 770, in get_group
group = get_group_goals(group)
File "/app/wehealth/wehealth/utils.py", line 786, in get_group_goals
createGoal2Group.delay(group['info'], g)
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/task.py", line 453, in delay
return self.apply_async(args, kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/task.py", line 565, in apply_async
**dict(self._get_exec_options(), **options)
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/base.py", line 354, in send_task
reply_to=reply_to or self.oid, **options
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/amqp.py", line 305, in publish_task
**kwargs
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/messaging.py", line 172, in publish
routing_key, mandatory, immediate, exchange, declare)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 470, in _ensured
interval_max)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 382, in ensure_connection
interval_start, interval_step, interval_max, callback)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/utils/__init__.py", line 246, in retry_over_time
return fun(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 250, in connect
return self.connection
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 756, in connection
self._connection = self._establish_connection()
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 711, in _establish_connection
conn = self.transport.establish_connection()
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 116, in establish_connection
conn = self.Connection(**opts)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/connection.py", line 165, in __init__
self.transport = self.Transport(host, connect_timeout, ssl)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/connection.py", line 186, in Transport
return create_transport(host, connect_timeout, ssl)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/transport.py", line 299, in create_transport
return TCPTransport(host, connect_timeout)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/transport.py", line 95, in __init__
raise socket.error(last_err)
error: [Errno 111] Connection refused
Request repr():
<WSGIRequest
path:/team/46/,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{},
META:{u'CSRF_COOKIE': u'y8sR9HccmrzW8RaYDQwmalvKiRl2E6DK',
'HTTP_ACCEPT': '*/*',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate',
'HTTP_CONNECTION': 'close',
'HTTP_CONNECT_TIME': '0',
'HTTP_FROM': '[email protected]',
'HTTP_HOST': 'wehealth.herokuapp.com',
'HTTP_TOTAL_ROUTE_TIME': '0',
'HTTP_USER_AGENT': 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)',
'HTTP_VIA': '1.1 vegur',
'HTTP_X_FORWARDED_FOR': '77.88.47.24, 10.33.252.175',
'HTTP_X_FORWARDED_PORT': '80',
'HTTP_X_FORWARDED_PROTO': 'http',
'HTTP_X_REQUEST_ID': 'a0a5b07f-b6be-40ec-b04a-81690188d0b4',
'HTTP_X_REQUEST_START': '1558372953380',
'PATH_INFO': u'/team/46/',
'QUERY_STRING': '',
'REMOTE_ADDR': 'localhost',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': u'',
'SERVER_NAME': 'unix',
'SERVER_PORT': '/tmp/nginx.socket',
'SERVER_PROTOCOL': 'HTTP/1.0',
'SERVER_SOFTWARE': 'waitress',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7fc4b5d041e0>,
'wsgi.file_wrapper': <class 'waitress.buffers.ReadOnlyFileBasedBuffer'>,
'wsgi.input': <newrelic.api.wsgi_application._WSGIInputWrapper object at 0x7fc4857e7310>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>
업데이트 내 앱에서 오류가 발생하는 것 같습니다. 오류와 관련된 비동기 작업의 코드는 다음과 같습니다.
@shared_task
def createGoal2Group(group, goal):
# "Create a Goal2Group link if user completes goal for first time"
goal2group = Goal2Group.objects.get_or_create(group=group, goal=goal)
답변1
아니요, 이러한 것들은 당신이 상상하는 것과 반대 방향으로 작동합니다. "연결 거부됨"이 표시되는 유일한 경우는 다음과 같습니다.너다른 서버에 연결하세요.
(서버가 HTTP 연결을 허용하지 않는 경우클라이언트(예: Yandex 봇)은 서버에서 "연결 거부" 오류가 발생하는 것입니다.~ 아니다당신의 웹앱. 게다가 웹앱은 애초에 연결도 처리하지 않습니다. 이것이 Heroku 웹서버의 임무입니다.)
Python 스택 추적을 자세히 살펴보십시오. wehealth.utils.get_group()
'celery' 비동기 작업 패키지로 이동한 다음 'amqp' 메시징 클라이언트로 이동하여 결국 amqp.transport 내에서 오류를 보고합니다. 다시 말해서,앱이 AMQP 서버에 도달하지 못합니다.