フラスコアプリをローカルでのみ永久に実行するためのアドバイス

2020年04月26日に質問されました。  ·  閲覧回数 546回  ·  ソース

lionheart picture
2020年04月26日

1台のコンピューターで永遠に存続するWebフォームを作成したいと思います。 ユーザーはコンピューターにアクセスしてフォームに記入し、送信することができます。 送信後、Excelファイルに応答を記録してメールを送信します。 次のユーザーが来て、新しいフォームに自動的に入力できます。 作成が簡単なため、このタスクにFlaskを使用することを計画していましたが、一部の実稼働サーバーではこれを実行していないため、単一のコンピューターで開発中にローカルで実行するだけです。

誰かがFlaskでこのようなことをするのを見たことがないので、自分のアイデアが可能かどうか、それとも避けるべきかどうか疑問に思いました。 私はWeb開発にも慣れていないので、ローカルの開発用コンピューターでフラスコアプリケーションを24時間年中無休で維持することでどのような問題が発生する可能性があるのか​​疑問に思いました。

ありがとう

回答

Dan Safee picture
2020年04月26日
2

あなたのアイデアは可能であり、この種のことを行う方法はたくさんありますが、あなたが提案していることは必ずしも避けられるべきではありません。

コンピューター上で長期間実行されるすべてのアプリは、プロセスを開始し、閉じられるまでプロセスを続行します。 それは本質的にあなたがしていることです。

私のビジネスでこれを自分で行った(そして現在も行っている)ので、それはうまく機能していると言えます。

唯一の注意点は、それが常に利用可能であることを保証するために、さまざまな理由でプロセスが閉じた場合に再起動されることを確認するために、何らかのツールでプロセスを監視する必要があるということです。

Linuxでは、スーパーバイザーはそれを行うための優れたツールです。 Windowsでは、サービスとして登録できます。 ただし、再起動する簡単な方法を作成して、ユーザーが必要なときにダウンした場合に簡単に再起動できるようにすることもできます。

alvst picture
2020年04月26日
2

原則としてこれを行うことには何の問題もありませんが、それは報酬までの時間の見返りのための最良の解決策ではない可能性があります。

まず、あなたの質問に答えるために、これは初心者でも簡単に行うことができ、最小限のPythonとHTMLの経験で数時間でこれを完了することができます。 アプリはさまざまな理由(容量不足、メモリアドレスの不良など)でバックグラウンドでクラッシュする可能性がありますが、ほとんどの場合は問題ありません。

具体的に構築することに関しては、すべて可能です。結果をExcelファイルに追加するために使用できるライブラリがあります。または、CSVに簡単に追加することもできます(これは私がお勧めします)。 同様に、電子メールの作成と送信は比較的簡単ですが、Pythonなしで行う方がはるかに簡単です。

フラスコ/ Pythonに設定されていない場合は、Googleフォームをチェックアウトできますが、Pythonに設定されている場合、または学習体験として使用したい場合は、間違いなく実行できます。

Saiprasad Balasubramanian picture
2020年04月26日
1

はい、これは可能です。 これは、データセンターのサーバーで実行されるアプリケーションと非常によく似ています。

アプリケーションを永久に実行し続ける、またはシステムの起動後に再起動するにsystemd 、UnixのNSSM - the Non-Sucking Service Manager またはService Controlを使用してアプリケーションを監視し、クラッシュした場合は再起動できます。 これも起動時に有効にする必要があります。

これ以外に、 Waitresを使用してFlaskアプリケーションを提供することもできます。 WaitressはWSGIWebサーバーであり、スレッドとワーカーの数を簡単に構成して、同時に複数のユーザーにサービスを提供できるようにすることができます。

実稼働環境では、GunicornやウェイトレスなどのWebサーバーインターフェイスを使用することを常にお勧めします。