Apache服务器上的Celery引发意外的IOError

时间:2016-06-10 11:37:43

标签: python linux django apache

我正在开发一个Django项目,用户可以通过Web UI执行python脚本。我使用Wooey创建了用户界面。 Celery用作任务队列(RabbitMQ作为代理)。该站点通过CentOS在小型Apache服务器上运行(不确定Linux版本)。

我设法让我的网站运行Wooey提供的测试脚本和我自己的几个脚本。 当我尝试通过此服务器上的站点执行某个大型脚本时,问题出现了。此脚本在本地主机上运行正常(即通过manage.py runserver启动我的站点)。但是,每次我尝试将此脚本提交到服务器上的任务队列(通过网站)时,都会弹出某个错误:

 -------------- celery@RK-DEP-APACHE01.company.local v3.1.23 (Cipater)
---- **** -----
--- * ***  * -- Linux-3.10.0-229.el7.x86_64-x86_64-with-centos-7.1.1503-Core
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         default:0x15fcc10 (.default.Loader)
- ** ---------- .> transport:   amqp://guest:**@localhost:5672//
- ** ---------- .> results:     disabled://
- *** --- * --- .> concurrency: 2 (prefork)
-- ******* ----
--- ***** ----- [queues]
 -------------- .> celery           exchange=celery(direct) key=celery


[tasks]
  . skipid.celery.debug_task
  . wooey.tasks.WooeyTask
  . wooey.tasks.submit_script

[2016-06-10 10:33:59,386: INFO/Beat] beat: Starting...
[2016-06-10 10:33:59,401: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672//
[2016-06-10 10:33:59,426: INFO/MainProcess] mingle: searching for neighbors
[2016-06-10 10:34:00,435: INFO/MainProcess] mingle: all alone
[2016-06-10 10:34:00,454: WARNING/MainProcess] celery@RK-DEP-APACHE01.company.local ready.
[2016-06-10 10:34:03,275: INFO/MainProcess] Received task: wooey.tasks.submit_script[0dea8557-a69f-4685-8ba4-0a                  675461a76d]
[2016-06-10 10:34:03,314: ERROR/MainProcess] Task wooey.tasks.submit_script[0dea8557-a69f-4685-8ba4-0a675461a76                  d] raised unexpected: IOError()
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/celery/app/trace.py", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/celery/app/trace.py", line 438, in __protected_call__
    return self.run(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/wooey/tasks.py", line 49, in submit_script
    command = utils.get_job_commands(job=job)
  File "/usr/lib/python2.7/site-packages/wooey/backend/utils.py", line 72, in get_job_commands
    subproc_dict = param.get_subprocess_value()
  File "/usr/lib/python2.7/site-packages/wooey/models/core.py", line 333, in get_subprocess_value
    value = self.value
  File "/usr/lib/python2.7/site-packages/wooey/models/core.py", line 405, in value
    raise IOError
IOError

我已确保授予服务器写入所有正确输出目录的权限,并将所有这些目录的权限设置为777,但这并没有帮助。 由于脚本通过本地托管的站点运行,我认为这是某种权限问题。

任何和所有建议表示赞赏。 谢谢!

1 个答案:

答案 0 :(得分:2)

我遵循了Klaus D.'s建议,并从Wooey IOError文件的第405行删除了core.py

事实证明,错误确实是由我认为我之前已经纠正的许可问题引起的。 Wooey创建的一些新文件获得了默认的OS权限设置,因此禁止服务器(或启动服务器的用户)写入和读取这些文件。

编辑:Wooey创建的所有文件夹都有正确的权限参数,但有些文件的默认参数不是我想要的参数。