2016-08-04 51 views
2

我目前正在开发一个应用程序。这个网络应用程序有它的自己的域名。当最初创建我设置域名和注册商使用CNAME和它成功后显示几个小时“这是一个烧瓶应用程序...”类似的东西。如何设置烧瓶pythonanyhwere基于瓶megatutorial

我决定遵循Grinberg先生在他的书(在localhost上完全可用)的例子。所以我克隆我的个人存储库到pythonanywhere并运行以下命令。

python manage.py db init 
python manage.py db upgrade 
python manage.py migrate 

到目前为止每件事情都可以。我使用mysql workbench检出了mysql数据库。

现在来了我的问题。

当我运行python manage.py runserver

它抛出我下面的错误。

/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages 

/flask_sqlalchemy/__init__.py:800: UserWarning: SQLALCHEMY_TRACK_MODIFICA 
TIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning. 
    warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to su 
ppress this warning.') 
Traceback (most recent call last): 
    File "manage.py", line 20, in <module> 
    manager.run() 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask_script/__init__.py", line 412, in run 
    result = self.handle(sys.argv[0], sys.argv[1:]) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask_script/__init__.py", line 383, in handle 
    res = handle(*args, **config) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask_script/commands.py", line 425, in __call__ 
    **self.server_options) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/flask/app.py", line 843, in run 
    run_simple(host, port, self, **options) 
    File "/home/username/.virtualenvs/webapp/local/lib/python2.7/site-packages/werkzeug/serving.py", line 677, in run_simple 
    s.bind((hostname, port)) 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 98] Address already in use 

我试过禁用wsgi.py文件(注释掉所有东西)仍然是一样的。

事项:

  1. 我有一个付费帐户相关联。
  2. 这是pythonanywhere上的第二个webapp。 (第一个是不是基于教程建模和工程只是罚款)

编辑

我改变了端口从5000到9000,并在控制台上运行。但我不能访问我的网站。我应该注释掉wsgi文件吗?

目前它看起来喜欢这样的:

import sys 

# # add your project directory to the sys.path 
project_home = u'/home/username/e_orders/e_orders' 
if project_home not in sys.path: 
    sys.path = [project_home] + sys.path 

# # import flask app but need to call it "application" for WSGI to work 
from manager import app as application 

manage.py

import os 
from app import create_app, db 
from app.models import User 
from flask_script import Manager, Shell, Server 
from flask_migrate import Migrate, MigrateCommand 


app = create_app(os.getenv('FLASK_CONFIG') or 'default') 
manager = Manager(app) 
migrate = Migrate(app, db) 


def make_shell_context(): 
    return dict(app=app, db=db, User=User) 

manager.add_command('shell', Shell(make_context=make_shell_context)) 
manager.add_command('db', MigrateCommand) 
manager.add_command('runserver', Server(port=9000)) 
if __name__ == '__main__': 
    manager.run() 

编辑2

我有与上述WSGI结构下面的错误。

错误日志

ImportError: No module named manager 
2016-08-04 17:42:39,589 :Error running WSGI application 
Traceback (most recent call last): 
    File "/bin/user_wsgi_wrapper.py", line 154, in __call__ 
    app_iterator = self.app(environ, start_response) 
    File "/bin/user_wsgi_wrapper.py", line 170, in import_error_application 
    raise e 
ImportError: No module named manager 
+0

您正在使用运行的端口。它说这个端口已经被使用了。 –

+0

我发现默认是port = 5000。我会改变它并回复你。 –

+0

好吧,如果它适合你,使用CTRL + C来完全不会产生相同的错误 –

回答

2

PythonAnywhere开发这里。

如果您在PythonAnywhere上从控制台运行Flask应用程序,则实际上不能从其他位置访问它。它可能会运行,但没有任何路由任何请求。所以没有必要从控制台运行任何东西(除非你只是测试语法错误,我猜)。

相反,您需要在“Web”选项卡上创建一个Web应用程序 - 看起来您已经完成了该任务。然后使用您似乎已经发现的WSGI文件进行路由。

如果你做了这一切,那么当您访问“网络”选项卡(通常是这样yourusername.pythonanywhere.com)上显示的域名,那么你应该会看到你的网站。如果出现错误,请检查错误日志(也链接到“Web”选项卡),这应该有助于您进行调试。

[编辑:加入会员]

+0

所以我重新加载它。关闭bash runserver连接。更改了注册商的cname。但它仍然不起作用。 wsgi文件似乎是正确配置给你的?我是否正在从manager.py调用正确的应用程序 –

+0

如果我可以查看您的帐户,则可能更容易进行调试。在[email protected]上给我们留下一条线,我们可以从那里拿到它,也许可以在这里发布任何通常有用的结果。 –

+1

我修好了,我会很快发布我的答案。谢谢大家的见解! –

0

对不起,有很大的延迟。解决方案运行服务器是下图中的一个。

# This file contains the WSGI configuration required to serve up your 
# web application at http://<your-username>.pythonanywhere.com/ 
# It works by setting the variable 'application' to a WSGI handler of some 
# description. 
# 
# The below has been auto-generated for your Flask project 

import sys 

# # add your project directory to the sys.path 
project_home = u'/home/username/mysite/' 
if project_home not in sys.path: 
    sys.path = [project_home] + sys.path 

# # import flask app but need to call it "application" for WSGI to work 
from manage import app as application 

我将发布数据库设置也...