序言:
Python setuptools用于包分发.我有一个Python包(让我们称之为my_package),它有几个extra_require包.一切工作只是找到(安装和构建包,以及额外的,如果被要求),因为所有extra_require都是python包本身和pip正确解决了一切.一个简单的pip install my_package工作就像一个魅力.
设置:
现在,对于其中一个附加内容(让我们称之为extra1),我需要调用非python库的二进制文件X.
模块X本身(源代码)已添加到my_package代码库中,并包含在发行版中my_package.遗憾的是,要使用,X需要首先在目标机器上编译成二进制文件(C++实现;我假设这样的编译将在my_package安装的构建阶段进行).有一个Makefile在X不同的平台的编译优化库,使所有需要的,是运行make在各自的目录X库的my_package构建过程中运行时.
问题1:如何make使用setuptools/distutils在包的构建过程中运行终端命令(即在我的情况下)?
问题2:如何确保只有extra1在安装过程中指定了相应的终端命令才能执行?
例:
pip install my_package,则不会发生这种额外的库编译X.pip install my_package [extra1],则X需要编译模块,因此将在目标计算机上创建并提供相应的二进制文件.有点卡住解决异步电子邮件发送的问题.我想用芹菜和django数据库作为后端.因为目前我唯一想使用这个队列管理工具的是电子邮件,我也安装了django-celery-email.
按照说明,我对我的设置文件进行了这样的更新:
import djcelery
djcelery.setup_loader()
INSTALLED_APPS += ('kombu.transport.django',
'djcelery',
'djcelery_email')
BROKER_URL = 'django://'
EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
Run Code Online (Sandbox Code Playgroud)
我正在使用默认的django SMTP这样的设置:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'cs*****@gmail.com'
EMAIL_HOST_PASSWORD = '*********'
EMAIL_PORT = 587
Run Code Online (Sandbox Code Playgroud)
我确实为这两个djcelery和komby应用程序运行了迁移.现在,使用默认的django send_mail核心方法,不会发送电子邮件.
如果删除EMAIL_BACKEND选项,电子邮件发送工作,但非常慢.如果不是速度,我不会首先考虑排队这个过程.
我使用MySQL数据库作为数据库后端,并且它的错误日志文件在添加任务时没有显示任何内容,所以我假设,那部分没问题.在我看来,我错过了一些基本的安装或配置部分,可以很容易地被经验丰富的芹菜或djcelery用户发现,但像我这样的新手可能会错过.
更新 django shell解决方法:
>>> from django.core.mail import send_mail
>>> from django.conf import settings
>>> result = send_mail('test send', 'test_send_body_text', settings.EMAIL_HOST_USER, 'hornswf@gmail.com')
>>> result[0].status
u'PENDING'
>>> result[0].ready()
False
>>> result[0].failed()
False
>>> result[0].info
>>> result[0].result …Run Code Online (Sandbox Code Playgroud) 我相信有一个简单的问题,但无论如何它都让我卡住了.
说我有一个简单的模型:
class myModel(models.Model):
expires = models.DateTimeField(...)
Run Code Online (Sandbox Code Playgroud)
我希望,在指定的时间说一些事情:发送电子邮件,删除模型,更改一些模型字段......某事.django核心中有工具,允许我这样做吗?
或者,如果没有,我认为一些任务排队工具可能是有序的.我已经djcelery在我的项目中工作,虽然我是一个完全新手,而我迄今为止所能执行的只是运行django-celery-email包,以便异步发送我的邮件.虽然我不能说我完全有能力定义任务和工人在后台工作并且可靠.
如果有任何想法,关于如何解决这样的问题,请不要犹豫=)
我有一个Java多线程问题.我有以下工人阶级:
public class ThreadWorker implements Runnable {
//some code in here
public void run(){
// invokes some recursion method in the ThreadWorker itself,
// which will stop eventually
{
}
Run Code Online (Sandbox Code Playgroud)
要使用线程我正在使用ExecutorService:
public static int THREAD_NUMBER = 4;
public static ExecutorServide es = Executors.newFixedThreadPool(THREAD_NUMBER);
Run Code Online (Sandbox Code Playgroud)
添加ThreadWroker类的实例发生在这里:
public void recursiveMethod(Arraylist<Integers> elements, MyClass data){
if (elements.size() == 0 && data.qualifies()){
ThreadWorker tw = new ThreadWorker(data);
es.execute(tw);
return;
}
for (int i=0; i< elements.size(); i++){
// some code to prevent my …Run Code Online (Sandbox Code Playgroud) 作为django首发,我有一点问题需要处理:
<li><a href="{% url 'dyn_display' category='first'%}">first</a></li>
<li><a href="{% url 'dyn_display' category='second'%}">second</a></li>
<li><a href="{% url 'dyn_display' category='third'%}">third</a></li>
Run Code Online (Sandbox Code Playgroud)
url(r'(?P<category>[a-z]+)$', 'display', name='dyn_display')
Run Code Online (Sandbox Code Playgroud)
def courses_display(request, category):
return render_to_response('display/basic.html', {category: 'in'}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
最后是basic.html的一部分,所以你可以想一想为什么我需要那个类别变量
<div class="accordion" id="accordion2">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseFirst">
<strong>First</strong>
</a>
</div>
<div id="collapseFirst" class="accordion-body collapse {{ first }}">
<div class="accordion-inner">
...
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseSecond">
<strong>Second</strong>
</a>
</div>
<div id="collapseSecond" class="accordion-body collapse {{ second }}">
<div …Run Code Online (Sandbox Code Playgroud) 可能看起来像一个不起眼的问题(myabe),但为什么python表现得那样:
>>>a = []
>>>for i in xrange(5):
... a.append(lambda: i + 1)
>>>a[0]()
5
>>>a[1]()
5
>>>a[2]()
5
>>>a[3]()
5
>>>a[4]()
5
Run Code Online (Sandbox Code Playgroud)
当存在不同的功能时:
>>aaa
[<function <lambda> at 0x100499d70>, <function <lambda> at 0x100499e60>, <function <lambda> at 0x100499ed8>, <function <lambda> at 0x100499de8>, <function <lambda> at 0x10049f050>]
Run Code Online (Sandbox Code Playgroud)
或者我错过了python文档中真正重要的东西?