みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Django

Django TestCase で tearDownClass のエラー

Django で単体テストを作成しているときに,Python の unittest を継承している*1からと思って,クラスの初期化を setUpClass() 関数に記載してました. class DummyTest(TestCase): @classmethod def setUpClass(cls): ... setUpTestData()関数を使う ある…

SQL で NULL との比較が unknown になる

SQL では,NULLに比較述語を適用すると,常にunknownになります.これは分かりにくい印象がありますが,3値論理に準拠すれば明らかです. この性質により,例えば Django で以下のように apple_id に unique と null が共存できます.ここで,apple_id は必…

Djangoでsync_to_asyncの性能を測定する

Djangoで非同期処理を実装するときに,非同期ではない関数を使用するためのアダプター関数 asgiref.sync.sync_to_async() が用意されています*1. sync_to_async()関数は,SyncToAsyncクラスを使って,スレッドプールで実行可能な非同期関数を作成する仕組み…

Django async viewを使用してCloud Runで並行処理をする

一般的にWebサーバーの開発は非同期処理と相性がよいです.Webサーバーは不特定多数の人から任意の時刻にリクエストを受信して処理し,レスポンスを返します.Webサーバーの処理の多くは,データベースなど外部のリソースにアクセスすることなので,I/O boun…

reCAPTCHAを使用するフォームを自動でテストする

Google reCAPTCHAを使用することで,ボットがフォームに機械的なデータを送信するのを防ぐことができますが,フォームが正しく動作するかを確認するためにテストをすると,機械的なデータを送信することになり,フォームを通過できません.このどうしようも…

Djangoの開発サーバーではデータベース接続を維持してはいけない

Djangoのrunserverコマンドを使用して開発している時に,たくさんのリクエストを行うとデータベース接続数が次第に増えていき, FATAL: sorry, too many clients already` というエラーが発生する現象に遭遇した時のまとめです. 環境 Django 3.1.6 'CONN_MA…

Djangoで作成したDockerイメージをVS Codeでデバッグする

VS CodeのPython拡張機能を使うことで,Pythonスクリプトを簡単にデバッグすることができます.これをDockerで実行中のDjangoプロジェクトで使用できるようにします. Python - Visual Studio Marketplace debugpyとVS Codeの設定 r.py launch.json Dockerで…

Cloud RunでDjangoの快適なlogging設定

Cloud RunでDjangoのプロジェクトを快適に実行するためのloggingについてまとめます. 実行環境 Python logging logging.Logger logging.Handler logging.Formatter logging.Filter logging.config.dictConfig DjangoのLOGGINGの設定 Cloud Logging 認証の準…

DjangoのcollectstaticでAmazon S3に直接アップロードするとParamValidationError

タイトルの通りですが,Djangoに django-storagesとboto3をインストールして,collectstaticを実行してAmazon S3に直接アップロードを試みましたが,ParamValidationErrorが発生しました. settings.py STATICFILES_STORAGE = 'storages.backends.s3boto3.S3…

Heroku のデータベースのプランを変更する

Heroku postgresのデータベースのプランを変更する方法は以下のドキュメントにとても詳しく記載されているのですが,少し困ったことがあったので整理してみます. Upgrading the Version of a Heroku Postgres Database | Heroku Dev Center 上記の記事を補…

HxPat公開

特許の分類検索を補助するサービスを作成してみました. Vue.js, Djangoの練習を兼ねています.3日間で完成に至ったのは,Vue.jsがよいライブラリであるおかげです. hxpat.herokuapp.com ICPやFIなど特許分類を用いた検索に有用なツールだと思います.使っ…

Ubuntuでsystemdの使い方

Djangoを使ったPythonのWebアプリケーションをデプロイするのにgunicornを使います.この時gonicornを常時起動させる必要があり,systemdの出番となります. gonicornをsystemdを使ってデプロイする方法はこちらに詳しく書いてありますが,備忘録を兼ねてま…

Google App EngineでDjangoの管理画面が使えない

Google App EngineでDjangoの管理画面(admin/)で, You don"t have permission to edit anything. (変更のためのパーミッションがありません。) というエラーが表示されたら,urls.pyの内容を確認してください. # url.py from django.conf.urls import patt…