3

I try to push code from this GitHub repo to my Heroku application, but I keep getting the same error, and my process keeps exiting with error 1. I've looked at these posts to solve my problems:

gunicorn causing errors in heroku Flask app dont start on heroku server Python Flask heroku application error

main.py

import os
import sys
import urllib.request
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup
from flask import Flask, render_template, request, redirect

ic = Flask(__name__)

count = 0


@ic.route("/")
def main():
    if count == 1:
        return render_template("index.html", result=str((str(count) + " Image Downloaded !")))
    else:
        return render_template("index.html", result=str((str(count) + " Images Downloaded !")))


@ic.route("/get_images", methods=['POST'])
def get_images():
    _url = request.form['inputURL']
    try:
        global count
        count = 0
        code = requests.get(_url)
        text = code.text
        soup = BeautifulSoup(text)
        for img in soup.findAll('img'):
            count += 1
            if (img.get('src'))[0:4] == 'http':
                src = img.get('src')
            else:
                src = urljoin(_url, img.get('src'))
            download_image(src, count)
        return redirect("http://localhost:5000")
    except requests.exceptions.HTTPError as error:
        return render_template("index.html", result=str(error))


def download_image(url, num):
    try:
        image_name = str(num) + ".jpg"
        image_path = os.path.join("images/", image_name)
        urllib.request.urlretrieve(url, image_path)
    except ValueError:
        print("Invalid URL !")
    except:
        print("Unknown Exception" + str(sys.exc_info()[0]))


if __name__ == "__main__":
    ic.run()

Procfile

heroku ps:scale web=1
web: gunicorn main:app
ChrisGPT was on strike
  • 127,765
  • 105
  • 273
  • 257
Widdles
  • 153
  • 3
  • 12

1 Answers1

6

When you run

gunicorn main:app

you're telling gunicorn that your application's entry point is the app variable in th main module. You don't have an app variable; your Flask app is called ic.

You also don't need that heroku ps:scale web=1 line. That's a command that you might run on your local machine to scale your web process type to one dyno.

Change your Procfile to say

web: gunicorn main:ic

commit and redeploy.

ChrisGPT was on strike
  • 127,765
  • 105
  • 273
  • 257