Detener errores de 'Conexión rechazada' en producción

Detener errores de 'Conexión rechazada' en producción

Recientemente comencé a recibir error: [Errno 111] Connection refusederrores al http://yandex.com/botsrastrear mi sitio web en producción. No me importa que estén rastreando el sitio, pero prefiero no recibir estos correos electrónicos.

Mi corazonada es que se les niega porque están usando httpun puerto 80mientras mi sitio web lo requiere https. En este caso, es bueno que se los nieguen. Sin embargo, no estoy seguro de por qué recibo estos errores (de 4 a 5 veces al día desde la semana pasada).

¿Alguna idea sobre cómo detener estos errores? Estoy usando Python 2.7, Heroku y 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)}>

ACTUALIZAR Ya que parece que mi propia aplicación está causando el error. Aquí está el código de la tarea asíncrona asociada con el error:

@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)

Respuesta1

No, estas cosas funcionan en la dirección opuesta a la que imaginas. La única vez que aparece "Conexión rechazada" es cuandoconectarse a otro servidor.

(Si su servidor no acepta conexiones HTTP, entonces elclientela(es decir, los robots de Yandex) serían los que recibirían errores de "Conexión rechazada" del servidor.nosu aplicación web. Además, la aplicación web ni siquiera maneja conexiones en primer lugar; ese es el trabajo de los servidores web Heroku).

Eche un vistazo más de cerca a su seguimiento de pila de Python: va desde wehealth.utils.get_group()el paquete de tareas asíncronas 'apio', luego al cliente de mensajería 'amqp', que finalmente informa un error desde amqp.transport. En otras palabras,su aplicación no logra llegar al servidor AMQP.

información relacionada