小编Jco*_*ine的帖子

在Django网站中提交表单后,如何执行繁重的后台python代码?

我对Django中的后台任务有一个概念性的问题。我正在通过PythonAnywhere运行一个Python / Django站点。

我有一个名为“ databooks”的网络应用,该应用由具有以下条目的表单组成:

  1. 数据手册名称
  2. 文件夹位置/链接(在我的PythonAnywhere文件系统上)

然后,此数据手册应用程序查看文件夹位置,并编译其中的所有其他文件以创建一个大PDF。然而,由于合并页面并添加页脚等的性质,它被认为是“重处理”PythonAnywhere,他们定义为一个网络工作者超过5分钟,他们分别杀了。

我想到的解决方案是在提交表单后执行background-python脚本,该脚本将databooks views.py文件中的整个内容输入到backgrounddatabookgenerator.py文件中,该文件可以独立于用户在浏览器窗口中的运行而运行。

在查看了PythonAnywhere对此的诊断之后,我一直在研究一些选项,但是到目前为止,在实现后台任务(即django-background-tasks)方面还没有成功。

是否有人熟悉Django工作流程,在单击“提交”按钮后,可以实现将另一个python文件作为后台任务调用的实现?为此,我想使此后台任务独立于用户单击提交后的操作,允许繁重的数据手册生成过程自行完成,而无需考虑时间

views.py

def Databook_req(request):
    submitted = False
    if request.method == 'POST':
        form = DatabookForm(request.POST, request.FILES)
        What_would_you_like_to_save_the_completed_data_book_as = request.POST['What_would_you_like_to_save_the_completed_data_book_as']
        Major_Equipment_Folder = request.POST['Major_Equipment_Folder']
        if form.is_valid():
            data_dict = {
                'What_would_you_like_to_save_the_completed_data_book_as_': str(What_would_you_like_to_save_the_completed_data_book_as),
                'Major_Equipment_Folder': str(Major_Equipment_Folder)
            }
            form.save()
            DataBookName = str(What_would_you_like_to_save_the_completed_data_book_as) + '.pdf'
            original_path = str(Major_Equipment_Folder)
Run Code Online (Sandbox Code Playgroud)

***然后,数据手册代码通过引用上述变量来遵循此规则。我不确定是否需要一个单独的python文件来作为后台任务运行下面的所有内容,但是它目前正在超时。

python django pythonanywhere background-task

5
推荐指数
1
解决办法
92
查看次数

如何将 Python 站点包文件夹(未包含在内)添加到 PyInstaller 规范文件中?

我在使用 PyInstaller 时遇到了包含 python 包的问题,​​特别是docxcompose. 这是一个需要在 PyInstaller 目录中导入其 site-package 文件夹的包。我已经用 pip 安装了 docxcompose,它位于我的 site-packages 库中,文件夹标记为docxcompose. import docxcompose明确列在我在 PyInstaller 中引用的 python 文件中。

我正在使用规范文件和 --onedir 方法进行调试,因为我想最终使用 --onefile 进行安装。到目前为止,我已将这些添加到规范文件的分析部分,但没有成功:

hiddenimports=['docxcompose']
pathex=['C:\\Users\\myusername\\AppData\\Local\\Programs\\Python\\Python37\\Lib\\site-packages']
Run Code Online (Sandbox Code Playgroud)

docxcompose 没有添加到我的 PyInstall 中是否有原因?有没有办法可以在安装过程中强制复制该文件夹?

python docx pyinstaller

5
推荐指数
2
解决办法
8114
查看次数