werkzeug

Форк
0
/
manage-shorty.py 
84 строки · 2.1 Кб
1
import os
2
import tempfile
3

4
import click
5
from werkzeug.serving import run_simple
6

7

8
def make_app():
9
    from shorty.application import Shorty
10

11
    filename = os.path.join(tempfile.gettempdir(), "shorty.db")
12
    return Shorty(f"sqlite:///{filename}")
13

14

15
def make_shell():
16
    from shorty import models, utils
17

18
    application = make_app()
19
    return {"application": application, "models": models, "utils": utils}
20

21

22
@click.group()
23
def cli():
24
    pass
25

26

27
@cli.command()
28
def initdb():
29
    make_app().init_database()
30

31

32
@cli.command()
33
@click.option("-h", "--hostname", type=str, default="localhost", help="localhost")
34
@click.option("-p", "--port", type=int, default=5000, help="5000")
35
@click.option("--no-reloader", is_flag=True, default=False)
36
@click.option("--debugger", is_flag=True)
37
@click.option("--no-evalex", is_flag=True, default=False)
38
@click.option("--threaded", is_flag=True)
39
@click.option("--processes", type=int, default=1, help="1")
40
def runserver(hostname, port, no_reloader, debugger, no_evalex, threaded, processes):
41
    """Start a new development server."""
42
    app = make_app()
43
    reloader = not no_reloader
44
    evalex = not no_evalex
45
    run_simple(
46
        hostname,
47
        port,
48
        app,
49
        use_reloader=reloader,
50
        use_debugger=debugger,
51
        use_evalex=evalex,
52
        threaded=threaded,
53
        processes=processes,
54
    )
55

56

57
@cli.command()
58
@click.option("--no-ipython", is_flag=True, default=False)
59
def shell(no_ipython):
60
    """Start a new interactive python session."""
61
    banner = "Interactive Werkzeug Shell"
62
    namespace = make_shell()
63
    if not no_ipython:
64
        try:
65
            try:
66
                from IPython.frontend.terminal.embed import InteractiveShellEmbed
67

68
                sh = InteractiveShellEmbed.instance(banner1=banner)
69
            except ImportError:
70
                from IPython.Shell import IPShellEmbed
71

72
                sh = IPShellEmbed(banner=banner)
73
        except ImportError:
74
            pass
75
        else:
76
            sh(local_ns=namespace)
77
            return
78
    from code import interact
79

80
    interact(banner, local=namespace)
81

82

83
if __name__ == "__main__":
84
    cli()
85

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.