小编Pep*_*zza的帖子

python脚本在作为背景运行时看到traceback

我的服务器上有一个像这样运行的python脚本:

python script.py &
Run Code Online (Sandbox Code Playgroud)

该脚本工作正常,但不断我添加新的东西到脚本并重新运行后,其运行数天日子她念叨着没有任何问题,但有时脚本停止运行(运行内存不足),但自从我开始了脚本作为背景我不知道如何检查导致脚本停止运行的异常或错误.我在亚马逊上运行的Ubuntu服务器盒上.有关如何处理此不便的任何建议?

python linux

3
推荐指数
1
解决办法
870
查看次数

遍历导入常量的Pythonic方法

我正在从我的文件中导入一些常量,constants.py如下所示:

from constants import (SOME_CONST, OTHER_CONST, ANOTHER_ONE)
Run Code Online (Sandbox Code Playgroud)

这个常量是文件名,我正在读取数据,我想要实现的是:

for filename in [SOME_CONST, OTHER_CONST, ANOTHER_ONE]:
    # process file
Run Code Online (Sandbox Code Playgroud)

constants.py

SOME_CONST = "filename.txt"
OTHER_CONST = "myfile.xml"
ANOTHER_ONE = "file.csv"
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法避免在for中声明列表,如遍历或构建导入常量列表,因为可能有许多常量不仅仅是3例如示例而且容易出错,因为我会需要导入常量并将其添加到列表中,我只想导入它并使用导入的任何内容.

python

3
推荐指数
1
解决办法
59
查看次数

Mercurial 分支和合并,无需推送分支

这是我想要做的:

  1. 汞克隆http://www.my_repo.com
  2. hg 分支 new_branch
  3. hg update new_branch # 移动到新分支
  4. 对分支代码做一些更改
  5. hg commit -m '分支新分支的变化'
  6. hg update default # 移回默认分支
  7. hg merge new_branch # 将 new_branch 合并到默认值中以在默认值中添加更改
  8. hg commit -m '合并'
  9. 汞推

但此时,mercurial 迫使我hg push --new-branch将分支添加到远程存储库。我不想要 repo 中的分支,我只想在本地创建一个分支,做我想做的所有更改,然后当我准备好合并时,移动到默认值,拉取并更新默认更改(任何其他人可能在默认情况下添加了更改)并最终将我的分支合并到默认值中,并使 new_branch 消失成为可能,因为一旦它合并到默认值中我就不再需要它了。

我做错了什么,如果你没有注意到,我来自 git。

git version-control mercurial

3
推荐指数
1
解决办法
172
查看次数

Ruby需要另一个文件夹上的模块/类

我是Ruby的新手,我正在尝试理解require其他地方的模块或类定义的好方法.我有这个设置:

test/
  database/
    base.rb
  scripts/
    run.rb
Run Code Online (Sandbox Code Playgroud)

base.rb

module A
  def hi
    puts "It works"
  end
end
Run Code Online (Sandbox Code Playgroud)

run.rb

# I don't know how to require module A here
hi()
Run Code Online (Sandbox Code Playgroud)

现在我知道我可以这样做:require "#{File.dirname(__FILE__)}/database/base"但看起来很脆弱.我想知道是否有办法将文件夹添加到LOAD_PATH特定文件夹或整个应用程序.

ruby

3
推荐指数
1
解决办法
2369
查看次数

处理异常的上下文管理器

我试图围绕如何编写一个上下文管理器来处理在处理任何异常的同时编写一些日志。我试图解决的问题是编写这样的代码:

try:
    # code that can raise exception here
except Exception as e:
    print('failed', e)

print('all good')
Run Code Online (Sandbox Code Playgroud)

这是我在代码中的重复模式,我认为最好使用上下文管理器处理,例如:

with my_ctx_manager(success_msg='all good', failed_msg='failed):
    # code that can raise exception here
Run Code Online (Sandbox Code Playgroud)

这看起来好多了,但我不知道如何编写实际的上下文管理器来处理可能在上下文中出现的任何异常。

@contextlib.contextmanager
def my_ctx_manager(success_msg, failed_msg):
   try:
       # if no exception then print(success_msg)
       # How do I catch any exception here
   except Exception:
      print(failed_msg)
      # I need the exception to propagate as well
      raise
Run Code Online (Sandbox Code Playgroud)

我想我的问题更多是这样的:如何确保上下文管理器正确捕获、记录并重新引发正在包装的代码的任何异常?

python contextmanager

3
推荐指数
2
解决办法
1646
查看次数

OpenCV Mat方法"at"在Linux中返回奇怪的字符

我正在寻找一种方法来访问cv :: Mat对象中灰度像素的值,我能够找到很多答案,我确信它们有效,但对我来说它们只是没有.基本上我所拥有的是以下内容:

    gray_image = imread("myimage.png", CV_LOAD_IMAGE_GRAYSCALE);

    equalizeHist(gray_image, eq_image);

    // This line prints garbage
    const unsigned char* row = eq_image.ptr<unsigned char>(10);
    cout << row[10] << endl;

    // This line also prints garbage
    cout << eq_image.at<uchar>(10, 10) << endl;
Run Code Online (Sandbox Code Playgroud)

我只是想在位置(10,10)看到像素的灰度[0,255]值.我很确定这两行可以用于其他人,但不适合我,也许这是一个Linux的东西.

如何读取灰度整数中的cv :: Mat像素?

谢谢,

c++ linux opencv

2
推荐指数
1
解决办法
419
查看次数

找不到模板,在Webfaction上部署Pyramid

我正在尝试将我的webapp部署到Webfaction,基本示例正常工作,我在模板中有一个TemplateNotFound,它使用Jinja2扩展了一个基本模板.这是我的项目树:

/webapps
    /myapp
        development.ini
        production.ini
        /bin
    /theapp
        /Project
          setup.py
          /project
              __init__.py
              views.py
              /templates
                  base.jinja2
                  home.jinja2
              /static
Run Code Online (Sandbox Code Playgroud)

_ init _.py

config.include('pyramid_jinja2')
config.add_jinja2_search_path("templates")
Run Code Online (Sandbox Code Playgroud)

home.jinja2

{% extends "templates/base.jinja2" %}
Run Code Online (Sandbox Code Playgroud)

为了更清楚,该项目在本地工作我知道它是模板路径的东西,我不知道如何设置它,我尝试了许多不同的方式,无论如何这是追溯:

  File "..webapps/myapp/myapp/Project/project/templates/home.jinja2", line 1, in top-level template code
    {% extends "templates/base.jinja2" %}
  File "..webapps/myapp/lib/python2.7/site-packages/pyramid_jinja2-1.8-py2.7.egg/pyramid_jinja2/__init__.py", line 193, in get_source
    raise TemplateNotFound(name=ex.name, message=message)
TemplateNotFound: templates/base.jinja2; asset=..webapps/myapp/lib/python2.7/site-packages/Project-0.0-py2.7.egg/project/templates/base.jinja2; searchpath=['..webapps/myapp/lib/python2.7/site-packages/Project-0.0-py2.7.egg/project/templates']
Run Code Online (Sandbox Code Playgroud)

如果这是我的错误,请帮我设置模板的正确路径.

python webfaction pyramid

2
推荐指数
1
解决办法
445
查看次数

Django原始sql格式tablename

我试图将tablename插入到原始sql中,但它正在插入格式错误的字符串,因此SQL查询失败.我无法找到一种正确的方法将字符串插入到SQL查询中:

from django.db import connection
cursor = connection.cursor()
cursor.execute("SELECT * from %s;", ['product'])
Run Code Online (Sandbox Code Playgroud)

抛出:

django.db.utils.ProgrammingError: syntax error at or near "'product'"
LINE 1: SELECT * from 'product';
Run Code Online (Sandbox Code Playgroud)

python django postgresql

2
推荐指数
1
解决办法
946
查看次数

每4天运行一次作业,但现在应该首先运行

我试图设置APScheduler每4天运行一次,但我现在需要这份工作才能开始运行.我尝试使用interval触发器,但我发现它在运行之前等待指定的时间.我还尝试使用cron以下方式:

sched = BlockingScheduler()
sched.add_executor('processpool')

@sched.scheduled_job('cron', day='*/4')
def test():
    print('running')
Run Code Online (Sandbox Code Playgroud)

我得到的最后一个想法是start_date过去使用a :

@sched.scheduled_job('interval', seconds=10, start_date=datetime.datetime.now() - datetime.timedelta(hours=4))
Run Code Online (Sandbox Code Playgroud)

但是在跑步前仍然等待10秒钟.

apscheduler

2
推荐指数
1
解决办法
585
查看次数

使用索引和更好的SQL在循环中优化QuerySet

我有一个View,它返回有关电子邮件列表增长的一些统计信息。涉及的模型有:

models.py

class Contact(models.Model):
    email_list = models.ForeignKey(EmailList, related_name='contacts')
    customer = models.ForeignKey('Customer', related_name='contacts')
    status = models.CharField(max_length=8)
    create_date = models.DateTimeField(auto_now_add=True)


class EmailList(models.Model):
    customers = models.ManyToManyField('Customer',
        related_name='lists',
        through='Contact')


class Customer(models.Model):
    is_unsubscribed = models.BooleanField(default=False, db_index=True)
    unsubscribe_date = models.DateTimeField(null=True, blank=True, db_index=True)
Run Code Online (Sandbox Code Playgroud)

在“查看”中,我正在遍历所有EmailLists对象并获取一些指标:方法如下:

view.py

class ListHealthView(View):
    def get(self, request, *args, **kwargs):
        start_date, end_date = get_dates_from_querystring(request)

        data = []
        for email_list in EmailList.objects.all():
            # historic data up to start_date
            past_contacts = email_list.contacts.filter(
                status='active',
                create_date__lt=start_date).count()
            past_unsubscribes = email_list.customers.filter(
                is_unsubscribed=True,
                unsubscribe_date__lt=start_date,
                contacts__status='active').count()
            past_deleted = email_list.contacts.filter(
                status='deleted',
                modify_date__lt=start_date).count()
            # data …
Run Code Online (Sandbox Code Playgroud)

python django

2
推荐指数
1
解决办法
45
查看次数