Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

363
Vistas
La dirección ya está en uso, pero se ejecuta normalmente en Python Shell

Así que estaba creando un bot, un bot de Reddit, que vivirá en Heroku, pero a partir de la implementación, surgen problemas. La compilación se desarrolló sin problemas, hasta que iba a ver la aplicación y aparece el error de aplicación. Resulta que obtuve OSError: [Errno 98] Address already in use , pero todo funcionaba sin problemas en mi shell de Python. Aquí está mi código + estructura: Estructura de carpetas

aplicación.py:

 import praw import Levenshtein import os from bs4 import BeautifulSoup as bs import requests def g(url): r = requests.get(url) if r.status_code == 404: raise Exception page = r.text soup=bs(page,'html.parser') soup = soup.find('ul',{'class':'music_list clearfix'}) soup = soup.find_all('li') return [[i.find('a')['href'],i.find('p').contents[0],i.find('h3').contents[0]] for i in soup] def k(): h = 1 l = [] while 1: try: l+=g('https://hololive.hololivepro.com/en/music?paged=%d' % h) h+=1 except: break return l from flask import Flask from threading import Thread app = Flask('') @app.route('/') def home(): return "Server Alive!" def run(): app.run(host='localhost',port=8080) def keep_alive(): t = Thread(target=run) t.start() reddit = praw.Reddit( client_id="******", client_secret="*******", user_agent="web:mv_bot:v0.1 (by u/khang1411)", username="khang1411_bot", password='*******', ) def comp(w1,w2): w2 = w2.lower() w1 = w1.lower() if w1 in w2: return 1 w2 = ''.join(ch for ch in w2 if ch.isalnum() or ch == ' ') w1 = ''.join(ch for ch in w1 if ch.isalnum() or ch == ' ') l = 0 for i in w2.split(): j = Levenshtein.ratio(w1,i) if j>l: l=j j = Levenshtein.ratio(w1,w2) if j > l: l = j return l def form(l,mode,other): if mode == 'author': return ('These are the songs that matched the author %s: \n\n' % other) + '\n\n'.join(l) + '\n\n' + '^(This comment is made by a bot, if you have improvements/complaints please contact u/khang1411)' elif mode == 'title': return ('These are the songs that matched the title %s: \n\n' % other) + '\n\n'.join(l) + '\n\n' + '^(This comment is made by a bot, if you have improvements/complaints please contact u/khang1411)' def fromauthor(author): w = ['%s by %s at link %s' % (l[2],l[1],l[0]) for l in k() if comp(author,l[1]) > 0.85] return w def fromtitle(title): w= ['%s by %s at link %s' % (l[2],l[1],l[0]) for l in k() if comp(title,l[2]) > 0.85] return w if __name__ == '__main__': keep_alive() subreddit = reddit.subreddit("test") for comment in subreddit.stream.comments(skip_existing=True): print(comment.body) if '!mv' in comment.body: try: if comment.body.split()[1] == 'author': comment.reply(form(fromauthor(' '.join(comment.body.split()[2:])),'author',' '.join(comment.body.split()[2:]))) #comment.reply() elif comment.body.split()[1]=='title': comment.reply(form(fromtitle(' '.join(comment.body.split()[2:])),'title',' '.join(comment.body.split()[2:]))) except: pass

El archivo pip + pipfile.lock era de pipenv,

Perfil:

 web: gunicorn app:app

Requisitos.txt:

 beautifulsoup4==4.9.3 certifi==2021.5.30 charset-normalizer==2.0.4 click==8.0.1 colorama==0.4.4 Flask==2.0.1 gunicorn==20.1.0 idna==3.2 itsdangerous==2.0.1 Jinja2==3.0.1 Levenshtein==0.13.0 MarkupSafe==2.0.1 praw==7.4.0 prawcore==2.3.0 requests==2.26.0 soupsieve==2.2.1 update-checker==0.18.0 urllib3==1.26.6 websocket-client==1.2.1 Werkzeug==2.0.1

Tiempo de ejecución.txt:

 python-3.9.4

Ejecutarlo en Repl.it y Python Shell funciona, pero no en Heroku.

P/D: implementé la aplicación Heroku a través de GitHub, esta es la imagen: ingrese la descripción de la imagen aquí

Intenté cambiar el host y el puerto, pero no funcionó. ¿Cómo puedo arreglar esto? Gracias,

PD 2: Registro: https://pastebin.com/CmhpWXTW

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No puedes decidir qué puerto ejecutar en Heroku. Heroku le dirá el puerto correcto para usar a través de una variable ENV. Puede obtener esto y luego ejecutar:

 port = int(os.environ.get("PORT", 5000)) app.run(host='0.0.0.0', port=port)

Consulte los documentos para obtener más información.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda